Showing preview only (6,384K chars total). Download the full file or copy to clipboard to get everything.
Repository: spencermountain/compromise
Branch: master
Commit: 758eee33b8c0
Files: 1062
Total size: 5.9 MB
Directory structure:
gitextract_c9wmq0vi/
├── README.md
├── builds/
│ ├── compromise.js
│ ├── one/
│ │ ├── compromise-one.cjs
│ │ └── compromise-one.mjs
│ ├── three/
│ │ ├── compromise-three.cjs
│ │ └── compromise-three.mjs
│ └── two/
│ ├── compromise-two.cjs
│ └── compromise-two.mjs
├── changelog.md
├── data/
│ ├── README.md
│ ├── lexicon/
│ │ ├── adjectives/
│ │ │ ├── adjectives.js
│ │ │ └── comparables.js
│ │ ├── dates/
│ │ │ ├── dates.js
│ │ │ ├── durations.js
│ │ │ ├── months.js
│ │ │ └── weekdays.js
│ │ ├── index.js
│ │ ├── misc/
│ │ │ ├── adverbs.js
│ │ │ ├── conjunctions.js
│ │ │ ├── currencies.js
│ │ │ ├── determiners.js
│ │ │ ├── expressions.js
│ │ │ └── prepositions.js
│ │ ├── misc.js
│ │ ├── nouns/
│ │ │ ├── actors.js
│ │ │ ├── demonyms.js
│ │ │ ├── organizations.js
│ │ │ ├── possessives.js
│ │ │ ├── pronouns.js
│ │ │ ├── properNouns.js
│ │ │ ├── relative-prounoun.js
│ │ │ ├── singulars.js
│ │ │ ├── sportsTeams.js
│ │ │ └── uncountables.js
│ │ ├── numbers/
│ │ │ ├── cardinals.js
│ │ │ ├── multiples.js
│ │ │ ├── ordinals.js
│ │ │ └── units.js
│ │ ├── people/
│ │ │ ├── femaleNames.js
│ │ │ ├── firstnames.js
│ │ │ ├── honorifics.js
│ │ │ ├── lastnames.js
│ │ │ ├── maleNames.js
│ │ │ └── people.js
│ │ ├── places/
│ │ │ ├── cities.js
│ │ │ ├── countries.js
│ │ │ ├── places.js
│ │ │ └── regions.js
│ │ ├── switches/
│ │ │ ├── actor-verb.js
│ │ │ ├── adj-gerund.js
│ │ │ ├── adj-noun.js
│ │ │ ├── adj-past.js
│ │ │ ├── adj-present.js
│ │ │ ├── noun-gerund.js
│ │ │ ├── noun-verb.js
│ │ │ ├── person-adj.js
│ │ │ ├── person-date.js
│ │ │ ├── person-noun.js
│ │ │ ├── person-place.js
│ │ │ ├── person-verb.js
│ │ │ └── unit-noun.js
│ │ └── verbs/
│ │ ├── infinitives.js
│ │ ├── modals.js
│ │ ├── participles.js
│ │ ├── phrasals.js
│ │ └── verbs.js
│ └── pairs/
│ ├── AdjToNoun.js
│ ├── Comparative.js
│ ├── Gerund.js
│ ├── Participle.js
│ ├── PastTense.js
│ ├── PresentTense.js
│ ├── Superlative.js
│ └── index.js
├── demos/
│ ├── performance.html
│ ├── plugin.html
│ └── web-worker/
│ ├── _worker.js
│ └── index.html
├── eslint.config.js
├── one/
│ └── package.json
├── package.json
├── plugins/
│ ├── _experiments/
│ │ ├── ast/
│ │ │ ├── README.md
│ │ │ ├── package.json
│ │ │ ├── scratch.js
│ │ │ └── src/
│ │ │ ├── ast.js
│ │ │ ├── compute/
│ │ │ │ └── index.js
│ │ │ ├── lines.js
│ │ │ └── plugin.js
│ │ ├── cmd-k/
│ │ │ ├── README.md
│ │ │ ├── package.json
│ │ │ ├── scratch.js
│ │ │ └── src/
│ │ │ ├── plugin.js
│ │ │ ├── searchBang.js
│ │ │ └── slashCmd.js
│ │ ├── compress/
│ │ │ ├── README.md
│ │ │ └── src/
│ │ │ ├── index.js
│ │ │ └── lz.js
│ │ ├── markdown/
│ │ │ ├── README.md
│ │ │ ├── package.json
│ │ │ ├── scratch.js
│ │ │ └── src/
│ │ │ ├── Wrap.js
│ │ │ ├── parse/
│ │ │ │ ├── crawl.js
│ │ │ │ ├── index.js
│ │ │ │ ├── toPlaintext.js
│ │ │ │ └── uuid.js
│ │ │ └── plugin.js
│ │ └── sentiment/
│ │ ├── README.md
│ │ ├── package.json
│ │ ├── scratch.js
│ │ ├── src/
│ │ │ ├── data/
│ │ │ │ ├── _pckd.js
│ │ │ │ └── index.js
│ │ │ ├── emoji.js
│ │ │ ├── escape.js
│ │ │ ├── lib.js
│ │ │ └── plugin.js
│ │ └── test.js
│ ├── dates/
│ │ ├── README.md
│ │ ├── builds/
│ │ │ ├── compromise-dates.cjs
│ │ │ └── compromise-dates.mjs
│ │ ├── changelog.md
│ │ ├── demo/
│ │ │ └── index.html
│ │ ├── index.d.cts
│ │ ├── index.d.ts
│ │ ├── package.json
│ │ ├── scratch.js
│ │ ├── scripts/
│ │ │ ├── perf.js
│ │ │ └── version.js
│ │ ├── src/
│ │ │ ├── _version.js
│ │ │ ├── api/
│ │ │ │ ├── dates.js
│ │ │ │ ├── durations/
│ │ │ │ │ ├── index.js
│ │ │ │ │ └── parse.js
│ │ │ │ ├── find/
│ │ │ │ │ ├── index.js
│ │ │ │ │ └── split.js
│ │ │ │ ├── index.js
│ │ │ │ ├── normalize.js
│ │ │ │ ├── parse/
│ │ │ │ │ ├── index.js
│ │ │ │ │ ├── normalize.js
│ │ │ │ │ ├── one/
│ │ │ │ │ │ ├── 01-tokenize/
│ │ │ │ │ │ │ ├── 01-shift.js
│ │ │ │ │ │ │ ├── 02-counter.js
│ │ │ │ │ │ │ ├── 03-time.js
│ │ │ │ │ │ │ ├── 04-relative.js
│ │ │ │ │ │ │ ├── 05-section.js
│ │ │ │ │ │ │ ├── 06-timezone.js
│ │ │ │ │ │ │ ├── 07-weekday.js
│ │ │ │ │ │ │ ├── _timezones.js
│ │ │ │ │ │ │ └── index.js
│ │ │ │ │ │ ├── 02-parse/
│ │ │ │ │ │ │ ├── 01-today.js
│ │ │ │ │ │ │ ├── 02-holidays.js
│ │ │ │ │ │ │ ├── 03-next-last.js
│ │ │ │ │ │ │ ├── 04-yearly.js
│ │ │ │ │ │ │ ├── 05-explicit.js
│ │ │ │ │ │ │ └── index.js
│ │ │ │ │ │ ├── 03-transform/
│ │ │ │ │ │ │ ├── addCounter.js
│ │ │ │ │ │ │ └── index.js
│ │ │ │ │ │ ├── index.js
│ │ │ │ │ │ └── units/
│ │ │ │ │ │ ├── Unit.js
│ │ │ │ │ │ ├── _day.js
│ │ │ │ │ │ ├── _time.js
│ │ │ │ │ │ ├── _week.js
│ │ │ │ │ │ ├── _year.js
│ │ │ │ │ │ └── index.js
│ │ │ │ │ └── range/
│ │ │ │ │ ├── 01-two-times.js
│ │ │ │ │ ├── 02-date-range.js
│ │ │ │ │ ├── 03-one-date.js
│ │ │ │ │ ├── _reverse.js
│ │ │ │ │ ├── combos/
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── index.js
│ │ │ │ │ └── intervals/
│ │ │ │ │ └── index.js
│ │ │ │ ├── times.js
│ │ │ │ └── toJSON.js
│ │ │ ├── compute/
│ │ │ │ ├── 00-year.js
│ │ │ │ ├── 01-time-range.js
│ │ │ │ ├── 02-timezone.js
│ │ │ │ ├── 03-fixup.js
│ │ │ │ ├── index.js
│ │ │ │ └── matches.js
│ │ │ ├── debug.js
│ │ │ ├── model/
│ │ │ │ ├── regex.js
│ │ │ │ ├── tags.js
│ │ │ │ └── words/
│ │ │ │ ├── dates.js
│ │ │ │ ├── durations.js
│ │ │ │ ├── holidays.js
│ │ │ │ ├── index.js
│ │ │ │ ├── times.js
│ │ │ │ └── timezones.js
│ │ │ └── plugin.js
│ │ └── tests/
│ │ ├── _lib.js
│ │ ├── ambig-month.test.js
│ │ ├── ambig-week.test.js
│ │ ├── ambig-weekday.test.js
│ │ ├── backlog/
│ │ │ ├── combo.ignore.js
│ │ │ ├── duckling.ignore.js
│ │ │ ├── interval.ignore.js
│ │ │ └── units.ignore.js
│ │ ├── before-after.test.js
│ │ ├── chronic.test.js
│ │ ├── day-start.test.js
│ │ ├── dmy.test.js
│ │ ├── duration-range.test.js
│ │ ├── duration.test.js
│ │ ├── durations.test.js
│ │ ├── end.test.js
│ │ ├── equals.test.js
│ │ ├── false-positive.test.js
│ │ ├── format.test.js
│ │ ├── full-iso.test.js
│ │ ├── fullDates.test.js
│ │ ├── has-date.test.js
│ │ ├── misc.test.js
│ │ ├── phrase.test.js
│ │ ├── startDates.test.js
│ │ ├── tagger/
│ │ │ ├── ambiguous.test.js
│ │ │ ├── date-chunk.test.js
│ │ │ └── date_tag.test.js
│ │ ├── times.test.js
│ │ ├── timezone.test.js
│ │ ├── to-iso.test.js
│ │ ├── today.test.js
│ │ ├── tokenizer.test.js
│ │ └── week.test.js
│ ├── paragraphs/
│ │ ├── README.md
│ │ ├── builds/
│ │ │ ├── compromise-paragraphs.cjs
│ │ │ └── compromise-paragraphs.mjs
│ │ ├── index.d.ts
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── api.js
│ │ │ └── plugin.js
│ │ └── tests/
│ │ ├── _lib.js
│ │ └── misc.test.js
│ ├── payload/
│ │ ├── README.md
│ │ ├── builds/
│ │ │ ├── compromise-payload.cjs
│ │ │ └── compromise-payload.mjs
│ │ ├── index.d.ts
│ │ ├── package.json
│ │ ├── scratch.js
│ │ ├── src/
│ │ │ ├── debug.js
│ │ │ └── plugin.js
│ │ └── tests/
│ │ ├── _lib.js
│ │ └── payload.test.js
│ ├── speech/
│ │ ├── README.md
│ │ ├── builds/
│ │ │ ├── compromise-speech.cjs
│ │ │ └── compromise-speech.mjs
│ │ ├── demo/
│ │ │ └── index.html
│ │ ├── index.d.ts
│ │ ├── package.json
│ │ ├── scratch.js
│ │ ├── src/
│ │ │ ├── api.js
│ │ │ ├── compute/
│ │ │ │ ├── index.js
│ │ │ │ ├── soundsLike/
│ │ │ │ │ ├── index.js
│ │ │ │ │ ├── metaphone.js
│ │ │ │ │ └── transformations.js
│ │ │ │ └── syllables/
│ │ │ │ ├── index.js
│ │ │ │ ├── postProcess.js
│ │ │ │ └── syllables.js
│ │ │ └── plugin.js
│ │ └── tests/
│ │ ├── _lib.js
│ │ ├── soundsLike.test.js
│ │ └── syllables.test.js
│ ├── speed/
│ │ ├── README.md
│ │ ├── builds/
│ │ │ ├── compromise-speed.cjs
│ │ │ └── compromise-speed.mjs
│ │ ├── demo/
│ │ │ └── index.html
│ │ ├── index.d.ts
│ │ ├── package.json
│ │ ├── scratch.js
│ │ ├── scripts/
│ │ │ └── version.js
│ │ ├── src/
│ │ │ ├── _version.js
│ │ │ ├── keypress/
│ │ │ │ └── index.js
│ │ │ ├── lazyParse/
│ │ │ │ ├── lazyParse.js
│ │ │ │ ├── maybeMatch.js
│ │ │ │ └── plugin.js
│ │ │ ├── plugin.js
│ │ │ ├── stream/
│ │ │ │ └── streamFile.js
│ │ │ └── workerPool/
│ │ │ ├── index.js
│ │ │ ├── plugin.js
│ │ │ ├── pool/
│ │ │ │ ├── create.js
│ │ │ │ └── worker.js
│ │ │ └── rip.js
│ │ └── tests/
│ │ ├── _lib.js
│ │ ├── files/
│ │ │ └── freshPrince.txt
│ │ └── stream.test.js
│ ├── stats/
│ │ ├── README.md
│ │ ├── builds/
│ │ │ ├── compromise-stats.cjs
│ │ │ └── compromise-stats.mjs
│ │ ├── demo/
│ │ │ └── index.html
│ │ ├── index.d.ts
│ │ ├── package.json
│ │ ├── scratch.js
│ │ ├── scripts/
│ │ │ ├── generate.js
│ │ │ └── pack.js
│ │ ├── src/
│ │ │ ├── compute.js
│ │ │ ├── ngram/
│ │ │ │ ├── endGrams.js
│ │ │ │ ├── getGrams.js
│ │ │ │ ├── index.js
│ │ │ │ ├── sort.js
│ │ │ │ ├── startGrams.js
│ │ │ │ └── tokenize.js
│ │ │ ├── plugin.js
│ │ │ └── tfidf/
│ │ │ ├── _model.js
│ │ │ ├── idf.js
│ │ │ ├── index.js
│ │ │ ├── tf.js
│ │ │ └── unpack.js
│ │ └── tests/
│ │ ├── _lib.js
│ │ ├── edgegram.test.js
│ │ ├── misc.test.js
│ │ └── ngram.test.js
│ └── wikipedia/
│ ├── README.md
│ ├── builds/
│ │ ├── compromise-wikipedia.cjs
│ │ └── compromise-wikipedia.mjs
│ ├── config.js
│ ├── demo/
│ │ └── index.html
│ ├── index.d.ts
│ ├── package.json
│ ├── scratch.js
│ ├── scripts/
│ │ ├── generate/
│ │ │ ├── 01-download.js
│ │ │ ├── 02-filter.js
│ │ │ ├── 03-compress.js
│ │ │ ├── _no-list.js
│ │ │ └── index.js
│ │ ├── perf.js
│ │ └── stat.js
│ ├── src/
│ │ ├── _model.js
│ │ └── plugin.js
│ └── tests/
│ ├── _lib.js
│ └── misc.test.js
├── scratch.js
├── scripts/
│ ├── chunks.js
│ ├── coreference/
│ │ └── index.js
│ ├── debug.js
│ ├── match-linter.js
│ ├── match.js
│ ├── pack.js
│ ├── patterns/
│ │ ├── manual.js
│ │ ├── patterns.js
│ │ └── tester.js
│ ├── perf/
│ │ ├── _fetch.js
│ │ ├── flame/
│ │ │ ├── _sotu-text.js
│ │ │ └── index.js
│ │ ├── index.js
│ │ ├── novel.js
│ │ ├── package.json
│ │ ├── pool/
│ │ │ ├── _lib.js
│ │ │ ├── lookup-worker.js
│ │ │ ├── pool.js
│ │ │ └── worker.js
│ │ └── versions.js
│ ├── plugins.js
│ ├── test/
│ │ ├── coverage.js
│ │ ├── index.js
│ │ ├── smoke.test.js
│ │ ├── stress.js
│ │ └── types.ts
│ ├── typescript/
│ │ ├── one.ts
│ │ ├── three.ts
│ │ └── two.ts
│ └── version.js
├── src/
│ ├── 1-one/
│ │ ├── cache/
│ │ │ ├── api.js
│ │ │ ├── compute.js
│ │ │ ├── methods/
│ │ │ │ ├── cacheDoc.js
│ │ │ │ └── index.js
│ │ │ └── plugin.js
│ │ ├── change/
│ │ │ ├── api/
│ │ │ │ ├── case.js
│ │ │ │ ├── concat.js
│ │ │ │ ├── harden.js
│ │ │ │ ├── index.js
│ │ │ │ ├── insert.js
│ │ │ │ ├── lib/
│ │ │ │ │ ├── _sort.js
│ │ │ │ │ ├── insert.js
│ │ │ │ │ └── remove.js
│ │ │ │ ├── remove.js
│ │ │ │ ├── replace.js
│ │ │ │ ├── sort.js
│ │ │ │ └── whitespace.js
│ │ │ ├── compute/
│ │ │ │ ├── index.js
│ │ │ │ └── uuid.js
│ │ │ └── plugin.js
│ │ ├── contraction-one/
│ │ │ ├── compute/
│ │ │ │ ├── contractions/
│ │ │ │ │ ├── _splice.js
│ │ │ │ │ ├── apostrophe-d.js
│ │ │ │ │ ├── apostrophe-t.js
│ │ │ │ │ ├── french.js
│ │ │ │ │ ├── index.js
│ │ │ │ │ ├── number-range.js
│ │ │ │ │ └── number-unit.js
│ │ │ │ └── index.js
│ │ │ ├── model/
│ │ │ │ ├── contractions.js
│ │ │ │ ├── index.js
│ │ │ │ └── number-suffix.js
│ │ │ └── plugin.js
│ │ ├── freeze/
│ │ │ ├── compute.js
│ │ │ ├── debug.js
│ │ │ └── plugin.js
│ │ ├── lexicon/
│ │ │ ├── compute/
│ │ │ │ ├── index.js
│ │ │ │ ├── multi-word.js
│ │ │ │ └── single-word.js
│ │ │ ├── lib.js
│ │ │ ├── methods/
│ │ │ │ ├── expand.js
│ │ │ │ └── index.js
│ │ │ └── plugin.js
│ │ ├── lookup/
│ │ │ ├── api/
│ │ │ │ ├── buildTrie/
│ │ │ │ │ ├── compress.js
│ │ │ │ │ └── index.js
│ │ │ │ ├── index.js
│ │ │ │ └── scan.js
│ │ │ └── plugin.js
│ │ ├── match/
│ │ │ ├── api/
│ │ │ │ ├── _lib.js
│ │ │ │ ├── index.js
│ │ │ │ ├── join.js
│ │ │ │ ├── lookaround.js
│ │ │ │ ├── match.js
│ │ │ │ └── split.js
│ │ │ ├── lib.js
│ │ │ ├── methods/
│ │ │ │ ├── index.js
│ │ │ │ ├── match/
│ │ │ │ │ ├── 01-failFast.js
│ │ │ │ │ ├── 02-from-here.js
│ │ │ │ │ ├── 03-getGroup.js
│ │ │ │ │ ├── 03-notIf.js
│ │ │ │ │ ├── _lib.js
│ │ │ │ │ ├── index.js
│ │ │ │ │ ├── steps/
│ │ │ │ │ │ ├── and-block.js
│ │ │ │ │ │ ├── astrix.js
│ │ │ │ │ │ ├── contraction-skip.js
│ │ │ │ │ │ ├── greedy-match.js
│ │ │ │ │ │ ├── logic/
│ │ │ │ │ │ │ ├── and-or.js
│ │ │ │ │ │ │ ├── greedy.js
│ │ │ │ │ │ │ └── negative-greedy.js
│ │ │ │ │ │ ├── negative.js
│ │ │ │ │ │ ├── optional-match.js
│ │ │ │ │ │ ├── or-block.js
│ │ │ │ │ │ └── simple-match.js
│ │ │ │ │ └── term/
│ │ │ │ │ ├── _fuzzy.js
│ │ │ │ │ └── doesMatch.js
│ │ │ │ ├── parseMatch/
│ │ │ │ │ ├── 01-parseBlocks.js
│ │ │ │ │ ├── 02-parseToken.js
│ │ │ │ │ ├── 03-splitHyphens.js
│ │ │ │ │ ├── 04-inflect-root.js
│ │ │ │ │ ├── 05-postProcess.js
│ │ │ │ │ └── index.js
│ │ │ │ └── termMethods.js
│ │ │ └── plugin.js
│ │ ├── output/
│ │ │ ├── api/
│ │ │ │ ├── _fmts.js
│ │ │ │ ├── _text.js
│ │ │ │ ├── debug.js
│ │ │ │ ├── html.js
│ │ │ │ ├── index.js
│ │ │ │ ├── json.js
│ │ │ │ ├── out.js
│ │ │ │ ├── text.js
│ │ │ │ └── wrap.js
│ │ │ ├── methods/
│ │ │ │ ├── debug/
│ │ │ │ │ ├── _color.js
│ │ │ │ │ ├── chunks.js
│ │ │ │ │ ├── client-side.js
│ │ │ │ │ ├── highlight.js
│ │ │ │ │ ├── index.js
│ │ │ │ │ └── tags.js
│ │ │ │ ├── hash.js
│ │ │ │ └── index.js
│ │ │ └── plugin.js
│ │ ├── pointers/
│ │ │ ├── api/
│ │ │ │ ├── index.js
│ │ │ │ └── lib/
│ │ │ │ ├── _lib.js
│ │ │ │ ├── difference.js
│ │ │ │ ├── intersection.js
│ │ │ │ ├── split.js
│ │ │ │ └── union.js
│ │ │ ├── methods/
│ │ │ │ ├── getDoc.js
│ │ │ │ └── index.js
│ │ │ └── plugin.js
│ │ ├── sweep/
│ │ │ ├── api.js
│ │ │ ├── lib.js
│ │ │ ├── methods/
│ │ │ │ ├── buildNet/
│ │ │ │ │ ├── 01-parse.js
│ │ │ │ │ └── index.js
│ │ │ │ ├── index.js
│ │ │ │ ├── sweep/
│ │ │ │ │ ├── 01-getHooks.js
│ │ │ │ │ ├── 02-trim-down.js
│ │ │ │ │ ├── 04-runMatch.js
│ │ │ │ │ └── index.js
│ │ │ │ └── tagger/
│ │ │ │ ├── canBe.js
│ │ │ │ └── index.js
│ │ │ └── plugin.js
│ │ ├── tag/
│ │ │ ├── api/
│ │ │ │ ├── index.js
│ │ │ │ └── tag.js
│ │ │ ├── compute/
│ │ │ │ └── tagRank.js
│ │ │ ├── lib.js
│ │ │ ├── methods/
│ │ │ │ ├── addTags/
│ │ │ │ │ ├── 01-validate.js
│ │ │ │ │ ├── 02-fmt.js
│ │ │ │ │ ├── _colors.js
│ │ │ │ │ └── index.js
│ │ │ │ ├── canBe.js
│ │ │ │ ├── index.js
│ │ │ │ ├── setTag.js
│ │ │ │ └── unTag.js
│ │ │ └── plugin.js
│ │ ├── tokenize/
│ │ │ ├── compute/
│ │ │ │ ├── alias.js
│ │ │ │ ├── freq.js
│ │ │ │ ├── index.js
│ │ │ │ ├── machine.js
│ │ │ │ ├── normal/
│ │ │ │ │ ├── 01-cleanup.js
│ │ │ │ │ ├── 02-acronyms.js
│ │ │ │ │ └── index.js
│ │ │ │ ├── offset.js
│ │ │ │ ├── reindex.js
│ │ │ │ └── wordCount.js
│ │ │ ├── methods/
│ │ │ │ ├── 01-sentences/
│ │ │ │ │ ├── 01-simple-split.js
│ │ │ │ │ ├── 02-simple-merge.js
│ │ │ │ │ ├── 03-smart-merge.js
│ │ │ │ │ ├── 04-quote-merge.js
│ │ │ │ │ ├── 05-parens-merge.js
│ │ │ │ │ ├── index.js
│ │ │ │ │ └── is-sentence.js
│ │ │ │ ├── 02-terms/
│ │ │ │ │ ├── 01-hyphens.js
│ │ │ │ │ ├── 02-slashes.js
│ │ │ │ │ ├── 03-ranges.js
│ │ │ │ │ └── index.js
│ │ │ │ ├── 03-whitespace/
│ │ │ │ │ ├── index.js
│ │ │ │ │ └── tokenize.js
│ │ │ │ ├── index.js
│ │ │ │ ├── parse.js
│ │ │ │ └── unicode.js
│ │ │ ├── model/
│ │ │ │ ├── abbreviations/
│ │ │ │ │ ├── honorifics.js
│ │ │ │ │ ├── misc.js
│ │ │ │ │ ├── months.js
│ │ │ │ │ ├── nouns.js
│ │ │ │ │ ├── organizations.js
│ │ │ │ │ ├── places.js
│ │ │ │ │ └── units.js
│ │ │ │ ├── aliases.js
│ │ │ │ ├── index.js
│ │ │ │ ├── lexicon.js
│ │ │ │ ├── prefixes.js
│ │ │ │ ├── punctuation.js
│ │ │ │ ├── suffixes.js
│ │ │ │ └── unicode.js
│ │ │ └── plugin.js
│ │ └── typeahead/
│ │ ├── api.js
│ │ ├── compute.js
│ │ ├── lib/
│ │ │ ├── allPrefixes.js
│ │ │ └── index.js
│ │ └── plugin.js
│ ├── 2-two/
│ │ ├── contraction-two/
│ │ │ ├── api/
│ │ │ │ ├── contract.js
│ │ │ │ └── index.js
│ │ │ ├── compute/
│ │ │ │ ├── _splice.js
│ │ │ │ ├── apostrophe-d.js
│ │ │ │ ├── apostrophe-s.js
│ │ │ │ ├── apostrophe-t.js
│ │ │ │ ├── index.js
│ │ │ │ └── isPossessive.js
│ │ │ └── plugin.js
│ │ ├── lazy/
│ │ │ ├── lazyParse.js
│ │ │ ├── maybeMatch.js
│ │ │ └── plugin.js
│ │ ├── postTagger/
│ │ │ ├── api.js
│ │ │ ├── compute/
│ │ │ │ └── index.js
│ │ │ ├── model/
│ │ │ │ ├── _misc.js
│ │ │ │ ├── adjective/
│ │ │ │ │ ├── adj-adverb.js
│ │ │ │ │ ├── adj-gerund.js
│ │ │ │ │ ├── adj-noun.js
│ │ │ │ │ ├── adj-verb.js
│ │ │ │ │ └── adjective.js
│ │ │ │ ├── adverb.js
│ │ │ │ ├── conjunctions.js
│ │ │ │ ├── dates/
│ │ │ │ │ ├── date-phrase.js
│ │ │ │ │ └── date.js
│ │ │ │ ├── expressions.js
│ │ │ │ ├── index.js
│ │ │ │ ├── nouns/
│ │ │ │ │ ├── nouns.js
│ │ │ │ │ ├── organizations.js
│ │ │ │ │ └── places.js
│ │ │ │ ├── numbers/
│ │ │ │ │ ├── fractions.js
│ │ │ │ │ ├── money.js
│ │ │ │ │ └── numbers.js
│ │ │ │ ├── person/
│ │ │ │ │ ├── ambig-name.js
│ │ │ │ │ └── person-phrase.js
│ │ │ │ └── verbs/
│ │ │ │ ├── adj-gerund.js
│ │ │ │ ├── auxiliary.js
│ │ │ │ ├── imperative.js
│ │ │ │ ├── noun-gerund.js
│ │ │ │ ├── passive.js
│ │ │ │ ├── phrasal.js
│ │ │ │ ├── verb-noun.js
│ │ │ │ └── verbs.js
│ │ │ └── plugin.js
│ │ ├── preTagger/
│ │ │ ├── compute/
│ │ │ │ ├── index.js
│ │ │ │ ├── penn.js
│ │ │ │ ├── root.js
│ │ │ │ └── tagger/
│ │ │ │ ├── 1st-pass/
│ │ │ │ │ ├── 01-colons.js
│ │ │ │ │ └── 02-hyphens.js
│ │ │ │ ├── 2nd-pass/
│ │ │ │ │ ├── 00-tagSwitch.js
│ │ │ │ │ ├── 01-case.js
│ │ │ │ │ ├── 02-suffix.js
│ │ │ │ │ ├── 03-regex.js
│ │ │ │ │ ├── 04-prefix.js
│ │ │ │ │ └── 05-year.js
│ │ │ │ ├── 3rd-pass/
│ │ │ │ │ ├── 01-acronym.js
│ │ │ │ │ ├── 02-neighbours.js
│ │ │ │ │ ├── 03-orgWords.js
│ │ │ │ │ ├── 04-placeWords.js
│ │ │ │ │ ├── 05-fallback.js
│ │ │ │ │ ├── 06-switches.js
│ │ │ │ │ ├── 07-verb-type.js
│ │ │ │ │ ├── 08-imperative.js
│ │ │ │ │ ├── _adhoc.js
│ │ │ │ │ └── _fillTags.js
│ │ │ │ ├── _fastTag.js
│ │ │ │ └── index.js
│ │ │ ├── methods/
│ │ │ │ ├── expand/
│ │ │ │ │ ├── byTag.js
│ │ │ │ │ └── index.js
│ │ │ │ ├── index.js
│ │ │ │ ├── looksPlural.js
│ │ │ │ ├── quickSplit.js
│ │ │ │ └── transform/
│ │ │ │ ├── adjectives/
│ │ │ │ │ ├── conjugate/
│ │ │ │ │ │ ├── fromAdverb.js
│ │ │ │ │ │ ├── lib.js
│ │ │ │ │ │ └── toAdverb.js
│ │ │ │ │ ├── index.js
│ │ │ │ │ └── inflect.js
│ │ │ │ ├── index.js
│ │ │ │ ├── nouns/
│ │ │ │ │ ├── index.js
│ │ │ │ │ ├── toPlural/
│ │ │ │ │ │ ├── _rules.js
│ │ │ │ │ │ └── index.js
│ │ │ │ │ └── toSingular/
│ │ │ │ │ ├── _rules.js
│ │ │ │ │ └── index.js
│ │ │ │ └── verbs/
│ │ │ │ ├── conjugate/
│ │ │ │ │ └── index.js
│ │ │ │ ├── getTense/
│ │ │ │ │ ├── _guess.js
│ │ │ │ │ └── index.js
│ │ │ │ ├── index.js
│ │ │ │ └── toInfinitive/
│ │ │ │ └── index.js
│ │ │ ├── model/
│ │ │ │ ├── _expand/
│ │ │ │ │ ├── index.js
│ │ │ │ │ └── irregulars.js
│ │ │ │ ├── clues/
│ │ │ │ │ ├── _adj.js
│ │ │ │ │ ├── _gerund.js
│ │ │ │ │ ├── _noun.js
│ │ │ │ │ ├── _person.js
│ │ │ │ │ ├── _verb.js
│ │ │ │ │ ├── actor-verb.js
│ │ │ │ │ ├── adj-gerund.js
│ │ │ │ │ ├── adj-noun.js
│ │ │ │ │ ├── adj-past.js
│ │ │ │ │ ├── adj-present.js
│ │ │ │ │ ├── index.js
│ │ │ │ │ ├── noun-gerund.js
│ │ │ │ │ ├── noun-verb.js
│ │ │ │ │ ├── person-adj.js
│ │ │ │ │ ├── person-date.js
│ │ │ │ │ ├── person-noun.js
│ │ │ │ │ ├── person-place.js
│ │ │ │ │ ├── person-verb.js
│ │ │ │ │ └── unit-noun.js
│ │ │ │ ├── index.js
│ │ │ │ ├── irregulars/
│ │ │ │ │ └── plurals.js
│ │ │ │ ├── lexicon/
│ │ │ │ │ ├── _data.js
│ │ │ │ │ ├── emoticons.js
│ │ │ │ │ ├── frozenLex.js
│ │ │ │ │ ├── index.js
│ │ │ │ │ └── misc.js
│ │ │ │ ├── models/
│ │ │ │ │ ├── _data.js
│ │ │ │ │ └── index.js
│ │ │ │ ├── orgWords.js
│ │ │ │ ├── patterns/
│ │ │ │ │ ├── endsWith.js
│ │ │ │ │ ├── neighbours.js
│ │ │ │ │ ├── prefixes.js
│ │ │ │ │ └── suffixes.js
│ │ │ │ ├── personWords.js
│ │ │ │ ├── placeWords.js
│ │ │ │ └── regex/
│ │ │ │ ├── regex-normal.js
│ │ │ │ ├── regex-numbers.js
│ │ │ │ └── regex-text.js
│ │ │ ├── plugin.js
│ │ │ └── tagSet/
│ │ │ ├── dates.js
│ │ │ ├── index.js
│ │ │ ├── misc.js
│ │ │ ├── nouns.js
│ │ │ ├── values.js
│ │ │ └── verbs.js
│ │ └── swap/
│ │ ├── api/
│ │ │ ├── swap-verb.js
│ │ │ └── swap.js
│ │ └── plugin.js
│ ├── 3-three/
│ │ ├── adjectives/
│ │ │ └── plugin.js
│ │ ├── adverbs/
│ │ │ └── plugin.js
│ │ ├── chunker/
│ │ │ ├── api/
│ │ │ │ ├── api.js
│ │ │ │ ├── chunks.js
│ │ │ │ └── clauses.js
│ │ │ ├── compute/
│ │ │ │ ├── 01-easy.js
│ │ │ │ ├── 02-neighbours.js
│ │ │ │ ├── 03-matcher.js
│ │ │ │ ├── 04-fallback.js
│ │ │ │ ├── 05-fixUp.js
│ │ │ │ └── index.js
│ │ │ └── plugin.js
│ │ ├── coreference/
│ │ │ ├── api/
│ │ │ │ └── pronouns.js
│ │ │ ├── compute/
│ │ │ │ ├── findIt.js
│ │ │ │ ├── findPerson.js
│ │ │ │ ├── findThey.js
│ │ │ │ ├── index.js
│ │ │ │ └── lib.js
│ │ │ └── plugin.js
│ │ ├── misc/
│ │ │ ├── acronyms/
│ │ │ │ └── index.js
│ │ │ ├── parentheses/
│ │ │ │ ├── fns.js
│ │ │ │ └── index.js
│ │ │ ├── plugin.js
│ │ │ ├── possessives/
│ │ │ │ └── index.js
│ │ │ ├── quotations/
│ │ │ │ ├── fns.js
│ │ │ │ └── index.js
│ │ │ ├── selections/
│ │ │ │ └── index.js
│ │ │ └── slashes/
│ │ │ └── index.js
│ │ ├── normalize/
│ │ │ ├── api.js
│ │ │ ├── methods.js
│ │ │ └── plugin.js
│ │ ├── nouns/
│ │ │ ├── api/
│ │ │ │ ├── api.js
│ │ │ │ ├── hasPlural.js
│ │ │ │ ├── isPlural.js
│ │ │ │ ├── isSubordinate.js
│ │ │ │ ├── parse.js
│ │ │ │ ├── toJSON.js
│ │ │ │ ├── toPlural.js
│ │ │ │ └── toSingular.js
│ │ │ ├── find.js
│ │ │ └── plugin.js
│ │ ├── numbers/
│ │ │ ├── fractions/
│ │ │ │ ├── api.js
│ │ │ │ ├── convert/
│ │ │ │ │ ├── toCardinal.js
│ │ │ │ │ └── toOrdinal.js
│ │ │ │ ├── find.js
│ │ │ │ └── parse.js
│ │ │ ├── numbers/
│ │ │ │ ├── _toString.js
│ │ │ │ ├── api.js
│ │ │ │ ├── find.js
│ │ │ │ ├── format/
│ │ │ │ │ ├── index.js
│ │ │ │ │ ├── suffix.js
│ │ │ │ │ ├── toOrdinal/
│ │ │ │ │ │ ├── numOrdinal.js
│ │ │ │ │ │ └── textOrdinal.js
│ │ │ │ │ └── toText/
│ │ │ │ │ ├── data.js
│ │ │ │ │ └── index.js
│ │ │ │ ├── isUnit.js
│ │ │ │ └── parse/
│ │ │ │ ├── index.js
│ │ │ │ └── toNumber/
│ │ │ │ ├── data.js
│ │ │ │ ├── findModifiers.js
│ │ │ │ ├── index.js
│ │ │ │ ├── parseDecimals.js
│ │ │ │ ├── parseNumeric.js
│ │ │ │ └── validate.js
│ │ │ └── plugin.js
│ │ ├── redact/
│ │ │ └── plugin.js
│ │ ├── sentences/
│ │ │ ├── api.js
│ │ │ ├── conjugate/
│ │ │ │ ├── toFuture.js
│ │ │ │ ├── toInfinitive.js
│ │ │ │ ├── toNegative.js
│ │ │ │ ├── toPast.js
│ │ │ │ └── toPresent.js
│ │ │ ├── parse/
│ │ │ │ ├── index.js
│ │ │ │ └── mainClause.js
│ │ │ ├── plugin.js
│ │ │ └── questions.js
│ │ ├── topics/
│ │ │ ├── orgs/
│ │ │ │ └── api.js
│ │ │ ├── people/
│ │ │ │ ├── api.js
│ │ │ │ ├── find.js
│ │ │ │ ├── gender.js
│ │ │ │ └── parse.js
│ │ │ ├── places/
│ │ │ │ ├── api.js
│ │ │ │ └── find.js
│ │ │ ├── plugin.js
│ │ │ └── topics.js
│ │ └── verbs/
│ │ ├── api/
│ │ │ ├── api.js
│ │ │ ├── conjugate/
│ │ │ │ ├── toFuture.js
│ │ │ │ ├── toGerund.js
│ │ │ │ ├── toInfinitive.js
│ │ │ │ ├── toNegative.js
│ │ │ │ ├── toParticiple.js
│ │ │ │ ├── toPast.js
│ │ │ │ └── toPresent.js
│ │ │ ├── debug.js
│ │ │ ├── lib.js
│ │ │ ├── parse/
│ │ │ │ ├── adverbs.js
│ │ │ │ ├── getSubject.js
│ │ │ │ ├── grammar/
│ │ │ │ │ ├── forms.js
│ │ │ │ │ └── index.js
│ │ │ │ ├── index.js
│ │ │ │ └── root.js
│ │ │ └── toJSON.js
│ │ ├── find.js
│ │ └── plugin.js
│ ├── 4-four/
│ │ ├── facts/
│ │ │ ├── api.js
│ │ │ ├── parse/
│ │ │ │ ├── adjective.js
│ │ │ │ ├── index.js
│ │ │ │ ├── noun.js
│ │ │ │ ├── pivot.js
│ │ │ │ ├── postProcess.js
│ │ │ │ ├── statement/
│ │ │ │ │ └── index.js
│ │ │ │ └── verb.js
│ │ │ └── plugin.js
│ │ └── sense/
│ │ ├── api/
│ │ │ └── api.js
│ │ ├── compute/
│ │ │ └── index.js
│ │ ├── model/
│ │ │ ├── _data.js
│ │ │ ├── index.js
│ │ │ ├── more.js
│ │ │ └── senses/
│ │ │ ├── adjective.js
│ │ │ ├── index.js
│ │ │ ├── noun.js
│ │ │ └── verb.js
│ │ └── plugin.js
│ ├── API/
│ │ ├── View.js
│ │ ├── _lib.js
│ │ ├── extend.js
│ │ ├── inputs.js
│ │ ├── methods/
│ │ │ ├── compute.js
│ │ │ ├── index.js
│ │ │ ├── loops.js
│ │ │ └── utils.js
│ │ └── world.js
│ ├── _version.js
│ ├── four.js
│ ├── nlp.js
│ ├── one.js
│ ├── three.js
│ └── two.js
├── tagger.scratch.js
├── tests/
│ ├── _ignore/
│ │ ├── abbreviation.ignore.js
│ │ ├── before-after.ignore.js
│ │ ├── participle.ignore.js
│ │ ├── punctuation.ignore.js
│ │ ├── quotations.ignore.js
│ │ └── toQuestion.ignore.js
│ ├── bugs.md
│ ├── four/
│ │ ├── _lib.js
│ │ ├── facts.ignore.js
│ │ ├── match.ignore.js
│ │ └── misc.ignore.js
│ ├── hmm.js
│ ├── one/
│ │ ├── _lib.js
│ │ ├── cache/
│ │ │ ├── cache.test.js
│ │ │ ├── keep-cache.test.js
│ │ │ └── offset.test.js
│ │ ├── change/
│ │ │ ├── append.test.js
│ │ │ ├── case.test.js
│ │ │ ├── concat.test.js
│ │ │ ├── fork.ignore.js
│ │ │ ├── hyphenate.test.js
│ │ │ ├── insert.test.js
│ │ │ ├── join.test.js
│ │ │ ├── loop-mutate.test.js
│ │ │ ├── prepend.test.js
│ │ │ ├── reindex.test.js
│ │ │ ├── remove.test.js
│ │ │ ├── replace-sub.test.js
│ │ │ ├── split.test.js
│ │ │ └── splitOn.test.js
│ │ ├── lexicon/
│ │ │ └── lexicon.test.js
│ │ ├── lookup/
│ │ │ ├── lookup-long.test.js
│ │ │ └── lookup.test.js
│ │ ├── match/
│ │ │ ├── doc-match.test.js
│ │ │ ├── encoding.test.js
│ │ │ ├── fuzzy.test.js
│ │ │ ├── if.test.js
│ │ │ ├── lookaround.test.js
│ │ │ ├── match-method.test.js
│ │ │ ├── named-silent.test.js
│ │ │ ├── negative.test.js
│ │ │ ├── punctuation-match.test.js
│ │ │ ├── regex.test.js
│ │ │ ├── sweep-not.test.js
│ │ │ ├── sweep.test.js
│ │ │ └── syntax.test.js
│ │ ├── match.test.js
│ │ ├── misc/
│ │ │ ├── freeze.test.js
│ │ │ ├── inputs.test.js
│ │ │ ├── isFull.test.js
│ │ │ ├── loops.test.js
│ │ │ ├── misc.test.js
│ │ │ ├── pointer.test.js
│ │ │ ├── random.test.js
│ │ │ ├── reservedwords.test.js
│ │ │ ├── safe-contractions.test.js
│ │ │ ├── slash.test.js
│ │ │ ├── sort.test.js
│ │ │ ├── typeahead.test.js
│ │ │ ├── unicode.test.js
│ │ │ └── whitespace.test.js
│ │ ├── miss.test.js
│ │ ├── output/
│ │ │ ├── hash.test.js
│ │ │ └── html.test.js
│ │ ├── pointers/
│ │ │ ├── complement.test.js
│ │ │ ├── difference.test.js
│ │ │ ├── intersection.test.js
│ │ │ └── union.test.js
│ │ └── tokenize/
│ │ ├── hyphen-matrix.test.js
│ │ ├── hyphens.test.js
│ │ ├── punctuation.test.js
│ │ ├── sentence-split.test.js
│ │ └── term-split.test.js
│ ├── three/
│ │ ├── _lib.js
│ │ ├── acronym.test.js
│ │ ├── adjectives/
│ │ │ ├── adj-adv.test.js
│ │ │ ├── adj-noun.test.js
│ │ │ ├── adjectives.test.js
│ │ │ ├── comparative.test.js
│ │ │ └── superlative.test.js
│ │ ├── api.test.js
│ │ ├── chunker/
│ │ │ ├── chunks.ignore.js
│ │ │ └── clauses.test.js
│ │ ├── clause.test.js
│ │ ├── coreference/
│ │ │ ├── base-coref.ignore.js
│ │ │ ├── more.ignore.js
│ │ │ └── tricky-coref.ignore.js
│ │ ├── full-api.test.js
│ │ ├── fuzz.test.js
│ │ ├── hashTags.test.js
│ │ ├── json-three.test.js
│ │ ├── match.test.js
│ │ ├── misc.test.js
│ │ ├── miss.test.js
│ │ ├── normalize/
│ │ │ ├── normalize-custom.test.js
│ │ │ ├── normalize-methods.test.js
│ │ │ └── normalize-preset.test.js
│ │ ├── nouns/
│ │ │ ├── adjectives.test.js
│ │ │ ├── isPlural.test.js
│ │ │ ├── noun-find.test.js
│ │ │ ├── parse.test.js
│ │ │ ├── toPlural.test.js
│ │ │ └── toSingular.test.js
│ │ ├── numbers/
│ │ │ ├── backlog/
│ │ │ │ ├── agreement.ignore.js
│ │ │ │ ├── conversion.ignore.js
│ │ │ │ ├── money.ignore.js
│ │ │ │ └── overlap.ignore.js
│ │ │ ├── bigNumber.test.js
│ │ │ ├── fractions.test.js
│ │ │ ├── misc.test.js
│ │ │ ├── number-parse.test.js
│ │ │ ├── percent.test.js
│ │ │ ├── prefix.test.js
│ │ │ ├── toCardinal.test.js
│ │ │ ├── toText.test.js
│ │ │ ├── units.test.js
│ │ │ └── value.test.js
│ │ ├── parentheses.test.js
│ │ ├── people/
│ │ │ ├── gender.test.js
│ │ │ ├── people-parse.test.js
│ │ │ └── people.test.js
│ │ ├── places.test.js
│ │ ├── plugin.test.js
│ │ ├── possessives.test.js
│ │ ├── quotations.test.js
│ │ ├── redact.test.js
│ │ ├── sentences/
│ │ │ ├── debullet.test.js
│ │ │ ├── isQuestion.test.js
│ │ │ ├── misc-conjugate.test.js
│ │ │ ├── misc.test.js
│ │ │ ├── negative.test.js
│ │ │ ├── sentence-participle.ignore.js
│ │ │ ├── sentence.test.js
│ │ │ ├── svo.test.js
│ │ │ ├── tense.test.js
│ │ │ ├── toFuture.test.js
│ │ │ ├── toGerund.ignore.js
│ │ │ ├── toPast.test.js
│ │ │ └── toPresent.test.js
│ │ ├── setTag.test.js
│ │ ├── slashes.test.js
│ │ ├── subsets.test.js
│ │ ├── sweep-tag.test.js
│ │ ├── text-three.test.js
│ │ ├── topics.test.js
│ │ └── verbs/
│ │ ├── auxiliary.test.js
│ │ ├── conjugate.test.js
│ │ ├── imperative.test.js
│ │ ├── isplural.test.js
│ │ ├── misc.test.js
│ │ ├── parse.test.js
│ │ ├── parts.test.js
│ │ ├── phrasal.test.js
│ │ ├── phrasals.test.js
│ │ ├── subject.test.js
│ │ ├── toFuture.test.js
│ │ ├── toGerund.test.js
│ │ ├── toInfinitive.test.js
│ │ ├── toNegative.test.js
│ │ ├── toPast.test.js
│ │ ├── toPastParticiple.test.js
│ │ ├── toPresent.test.js
│ │ ├── verb-find.test.js
│ │ ├── verb-forms.test.js
│ │ └── verb-root.test.js
│ └── two/
│ ├── _backlog.js
│ ├── _lib.js
│ ├── contractions/
│ │ ├── contract.test.js
│ │ ├── contraction-match.test.js
│ │ ├── contraction.test.js
│ │ ├── expand.test.js
│ │ ├── had-would.test.js
│ │ ├── is-has-possessive.test.js
│ │ └── match-contraction.test.js
│ ├── freeze/
│ │ ├── freeze.test.js
│ │ ├── internal.test.js
│ │ └── lex.test.js
│ ├── groups/
│ │ ├── named-match.test.js
│ │ └── named-multi.test.js
│ ├── match/
│ │ ├── and.test.js
│ │ ├── blocks.test.js
│ │ ├── capture.test.js
│ │ ├── fancy-match.test.js
│ │ ├── greedy-capture.test.js
│ │ ├── lookahead.test.js
│ │ ├── match-tricky.test.js
│ │ ├── match.test.js
│ │ ├── min-max.test.js
│ │ ├── multiword.test.js
│ │ ├── not.test.js
│ │ ├── or.test.js
│ │ ├── root-match.test.js
│ │ └── soft-match.test.js
│ ├── match.test.js
│ ├── misc/
│ │ ├── canBe.test.js
│ │ ├── confidence.test.js
│ │ ├── constructor.test.js
│ │ ├── emoji.test.js
│ │ ├── lazy.test.js
│ │ ├── misc.test.js
│ │ ├── multiTag.test.js
│ │ ├── remove-more.test.js
│ │ ├── root.test.js
│ │ ├── smoke.test.js
│ │ ├── tagRank.test.js
│ │ ├── term-ids.test.js
│ │ ├── unique.test.js
│ │ └── wordcount.test.js
│ ├── miss.test.js
│ ├── output/
│ │ ├── json.test.js
│ │ ├── out.test.js
│ │ └── text.test.js
│ ├── plugin/
│ │ ├── addTags.ignore.js
│ │ └── addWords.test.js
│ ├── tagger/
│ │ ├── _pennSample.js
│ │ ├── actors.test.js
│ │ ├── inline.test.js
│ │ ├── lexicon.test.js
│ │ ├── multi.test.js
│ │ ├── number-match.test.js
│ │ ├── penn.test.js
│ │ ├── swears.test.js
│ │ ├── topics.test.js
│ │ └── untag.test.js
│ ├── transform/
│ │ ├── clone.test.js
│ │ ├── replace.test.js
│ │ └── swap.test.js
│ └── variables/
│ ├── gerund.test.js
│ ├── org-match.test.js
│ ├── past-adj.test.js
│ ├── person-match.test.js
│ ├── present-noun.test.js
│ └── verb-phrase.test.js
├── three/
│ └── package.json
├── tokenize/
│ └── package.json
├── tsconfig.json
├── two/
│ └── package.json
└── types/
├── misc.d.ts
├── one.d.cts
├── one.d.ts
├── three.d.cts
├── three.d.ts
├── two.d.cts
├── two.d.ts
└── view/
├── one.d.cts
├── one.d.ts
├── three.d.cts
├── three.d.ts
├── two.d.cts
└── two.d.ts
================================================
FILE CONTENTS
================================================
================================================
FILE: README.md
================================================
<div align="center">
<img height="15px" src="https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png"/>
<div><b>compromise</b></div>
<img src="https://user-images.githubusercontent.com/399657/68222691-6597f180-ffb9-11e9-8a32-a7f38aa8bded.png"/>
<div>modest natural language processing</div>
<div><code>npm install compromise</code></div>
<div align="center">
<sub>
by
<a href="https://spencermounta.in/">Spencer Kelly</a> and
<a href="https://github.com/spencermountain/compromise/graphs/contributors">
many contributors
</a>
</sub>
</div>
<img height="22px" src="https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png"/>
</div>
<div align="center">
<div>
<a href="https://npmjs.org/package/compromise">
<img src="https://img.shields.io/npm/v/compromise.svg?style=flat-square" />
</a>
<a href="https://codecov.io/gh/spencermountain/compromise">
<img src="https://codecov.io/gh/spencermountain/compromise/branch/master/graph/badge.svg" />
</a>
<a href="https://bundlephobia.com/result?p=compromise">
<img src="https://img.shields.io/bundlephobia/min/compromise"/>
<!-- <img src="https://badge-size.herokuapp.com/spencermountain/compromise/master/builds/compromise.min.js" /> -->
</a>
</div>
<div align="center">
<sub>
<a href="https://github.com/nlp-compromise/fr-compromise">french</a> • <a href="https://github.com/nlp-compromise/de-compromise">german</a> • <a href="https://github.com/nlp-compromise/it-compromise">italian</a> • <a href="https://github.com/nlp-compromise/es-compromise">spanish</a>
</sub>
</div>
</div>
<!-- spacer -->
<img height="25px" src="https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png"/>
<div align="left">
don't you find it strange,
<br/>
<ul>
<img height="2px" src="https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png"/>
<sub>how easy <b>text</b> is to <b>make</b>,</sub>
<br/>
<img height="2px" src="https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png"/>
<i>↬<sub>ᔐᖜ</sub><b>↬</b></i> <sub></sub>
and how hard it is to actually <b>parse</b> and <i>use</i>?
</ul>
</div>
<!-- spacer -->
<img height="45px" src="https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png"/>
<div align="left">
<img height="10px" src="https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png"/>compromise <i><a href="https://observablehq.com/@spencermountain/compromise-justification">tries its best</a></i> to turn text into data.
<br/>
<img height="30px" src="https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png"/>it makes limited and sensible decisions.
<br/>
<sub >
<img height="15px" src="https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png"/> it's not as smart as you'd think.
</sub>
<img height="45px" src="https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png"/>
<!--
it is
<a href="https://docs.compromise.cool/compromise-filesize">small,
<a href="https://docs.compromise.cool/compromise-performance">quick</a>,
and often <i><a href="https://docs.compromise.cool/compromise-accuracy">good-enough</a></i>.
<br/> -->
</div>
<img height="30px" src="https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png"/>
```js
import nlp from 'compromise'
let doc = nlp('she sells seashells by the seashore.')
doc.verbs().toPastTense()
doc.text()
// 'she sold seashells by the seashore.'
```
<!-- spacer -->
<img height="50px" src="https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png"/>
<div align="left">
<i>don't be fancy, at all:</i>
</div>
```js
if (doc.has('simon says #Verb')) {
return true
}
```
<!-- spacer -->
<img height="30px" src="https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png"/>
<div align="center">
<img height="50px" src="https://user-images.githubusercontent.com/399657/68221814-05ed1680-ffb8-11e9-8b6b-c7528d163871.png"/>
</div>
<div align="left">
<i>grab parts of the text:</i>
</div>
```js
let doc = nlp(entireNovel)
doc.match('the #Adjective of times').text()
// "the blurst of times?"
```
<div align="right">
<a href="https://docs.compromise.cool/compromise-match">match docs</a>
</div>
<div align="center">
<img height="50px" src="https://user-images.githubusercontent.com/399657/68221837-0d142480-ffb8-11e9-9d30-90669f1b897c.png"/>
</div>
<!-- spacer -->
<img height="30px" src="https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png"/>
<i>and get data:</i>
```js
import plg from 'compromise-speech'
nlp.extend(plg)
let doc = nlp('Milwaukee has certainly had its share of visitors..')
doc.compute('syllables')
doc.places().json()
/*
[{
"text": "Milwaukee",
"terms": [{
"normal": "milwaukee",
"syllables": ["mil", "wau", "kee"]
}]
}]
*/
```
<div align="right">
<a href="https://docs.compromise.cool/compromise-json">json docs</a>
</div>
<div align="center">
<img height="50px" src="https://user-images.githubusercontent.com/399657/68221814-05ed1680-ffb8-11e9-8b6b-c7528d163871.png"/>
</div>
<!-- spacer -->
<img height="30px" src="https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png"/>
avoid the problems of brittle parsers:
```js
let doc = nlp("we're not gonna take it..")
doc.has('gonna') // true
doc.has('going to') // true (implicit)
// transform
doc.contractions().expand()
doc.text()
// 'we are not going to take it..'
```
<div align="right">
<a href="https://docs.compromise.cool/compromise-contractions">contraction docs</a>
</div>
<div align="center">
<img height="50px" src="https://user-images.githubusercontent.com/399657/68221814-05ed1680-ffb8-11e9-8b6b-c7528d163871.png"/>
</div>
<!-- spacer -->
<img height="30" src="https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png"/>
and whip stuff around like it's data:
```js
let doc = nlp('ninety five thousand and fifty two')
doc.numbers().add(20)
doc.text()
// 'ninety five thousand and seventy two'
```
<div align="right">
<a href="https://docs.compromise.cool/compromise-values">number docs</a>
</div>
<div align="center">
<img height="50px" src="https://user-images.githubusercontent.com/399657/68221837-0d142480-ffb8-11e9-9d30-90669f1b897c.png"/>
</div>
<!-- spacer -->
<img height="30" src="https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png"/>
<sub>-because it actually is-</sub>
```js
let doc = nlp('the purple dinosaur')
doc.nouns().toPlural()
doc.text()
// 'the purple dinosaurs'
```
<div align="right">
<a href="https://docs.compromise.cool/nouns">noun docs</a>
</div>
<div align="center">
<img height="50px" src="https://user-images.githubusercontent.com/399657/68221731-e8b84800-ffb7-11e9-8453-6395e0e903fa.png"/>
</div>
<!-- spacer -->
<img height="50px" src="https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png"/>
Use it on the client-side:
```html
<script src="https://unpkg.com/compromise"></script>
<script>
var doc = nlp('two bottles of beer')
doc.numbers().minus(1)
document.body.innerHTML = doc.text()
// 'one bottle of beer'
</script>
```
or likewise:
```typescript
import nlp from 'compromise'
var doc = nlp('London is calling')
doc.verbs().toNegative()
// 'London is not calling'
```
<img height="75px" src="https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png"/>
<!--
bragging graphs
-->
<!-- spacer -->
<img height="30" src="https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png"/>
compromise is **~250kb** (minified):
<div align="center">
<!-- filesize -->
<a href="https://bundlephobia.com/result?p=compromise">
<img width="600" src="https://user-images.githubusercontent.com/399657/68234819-14dfc300-ffd0-11e9-8b30-cb8545707b29.png"/>
</a>
</div>
it's pretty fast. It can run on keypress:
<div align="center">
<a href="https://observablehq.com/@spencermountain/compromise-performance">
<img width="600" src="https://user-images.githubusercontent.com/399657/159795115-ed62440a-be41-424c-baa4-8dd15c48377d.png"/>
</a>
</div>
it works mainly by <a href="https://observablehq.com/@spencermountain/verbs">conjugating all forms</a> of a basic word list.
The final lexicon is <a href="https://observablehq.com/@spencermountain/compromise-lexicon">~14,000 words</a>:
<div align="center">
<img width="600" src="https://user-images.githubusercontent.com/399657/68234805-0d201e80-ffd0-11e9-8dc6-f7a600352555.png"/>
</div>
you can read more about how it works, [here](https://observablehq.com/@spencermountain/compromise-internals). it's weird.
<!-- spacer -->
<img height="75px" src="https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png"/>
<!--
one/two/three parts
-->
<p align="left">
<sub>okay -</sub>
<h1>
<code>compromise/one</code>
</h1>
<p align="center">A <code>tokenizer</code> of words, sentences, and punctuation.</p>
<img height="15px" src="https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png"/>
<p>
```js
import nlp from 'compromise/one'
let doc = nlp("Wayne's World, party time")
let data = doc.json()
/* [{
normal:"wayne's world party time",
terms:[{ text: "Wayne's", normal: "wayne" },
...
]
}]
*/
```
<div align="right">
<a href="https://docs.compromise.cool/compromise-tokenization">tokenizer docs</a>
</div>
<b>compromise/one</b> splits your text up, wraps it in a handy API,
<ul>
<sub>and does nothing else -</sub>
</ul>
<img height="25px" src="https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png"/>
<b>/one</b> is quick - most sentences take a 10th of a millisecond.
It can do <b>~1mb</b> of text a second - or 10 wikipedia pages.
<i>Infinite jest</i> takes 3s.
<div align="right">
You can also parallelize, or stream text to it with <a href="https://github.com/spencermountain/compromise/tree/master/plugins/speed">compromise-speed</a>.
</div>
<!-- spacer -->
<img height="60px" src="https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png"/>
<!-- two -->
<p align="center">
<h1 align="left">
<code>compromise/two</code>
</h1>
<p align="center">A <code>part-of-speech</code> tagger, and grammar-interpreter.</p>
<img height="15px" src="https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png"/>
<p>
```js
import nlp from 'compromise/two'
let doc = nlp("Wayne's World, party time")
let str = doc.match('#Possessive #Noun').text()
// "Wayne's World"
```
<div align="right">
<a href="https://docs.compromise.cool/compromise-tagger">tagger docs</a>
</div>
<p>
<img height="25px" src="https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png"/>
</p>
<b>compromise/two</b> automatically calculates the very basic grammar of each word.
<sub>this is more useful than people sometimes realize.</sub>
Light grammar helps you write cleaner templates, and get closer to the information.
<!-- Part-of-speech tagging is profoundly-difficult task to get 100% on. It is also a profoundly easy task to get 85% on. -->
<img height="50px" src="https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png"/>
compromise has <b>83 tags</b>, arranged in <a href="https://observablehq.com/@spencermountain/compromise-tags">a handsome graph</a>.
<b>#FirstName</b> → <b>#Person</b> → <b>#ProperNoun</b> → <b>#Noun</b>
you can see the grammar of each word by running `doc.debug()`
you can see the reasoning for each tag with `nlp.verbose('tagger')`.
if you prefer <a href="https://www.ling.upenn.edu/courses/Fall_2003/ling001/penn_treebank_pos.html"><i>Penn tags</i></a>, you can derive them with:
```js
let doc = nlp('welcome thrillho')
doc.compute('penn')
doc.json()
```
<img height="60px" src="https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png"/>
<!-- three -->
<p align="center">
<h1 align="left">
<code>compromise/three</code>
</h1>
<p align="center"><code>Phrase</code> and sentence tooling.</p>
<img height="15px" src="https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png"/>
<p>
```js
import nlp from 'compromise/three'
let doc = nlp("Wayne's World, party time")
let str = doc.people().normalize().text()
// "wayne"
```
<div align="right">
<a href="https://docs.compromise.cool/compromise-selections">selection docs</a>
</div>
<b>compromise/three</b> is a set of tooling to <i>zoom into</i> and operate on parts of a text.
`.numbers()` grabs all the numbers in a document, for example - and extends it with new methods, like `.subtract()`.
When you have a phrase, or group of words, you can see additional metadata about it with `.json()`
```js
let doc = nlp('four out of five dentists')
console.log(doc.fractions().json())
/*[{
text: 'four out of five',
terms: [ [Object], [Object], [Object], [Object] ],
fraction: { numerator: 4, denominator: 5, decimal: 0.8 }
}
]*/
```
```js
let doc = nlp('$4.09CAD')
doc.money().json()
/*[{
text: '$4.09CAD',
terms: [ [Object] ],
number: { prefix: '$', num: 4.09, suffix: 'cad'}
}
]*/
```
<img height="80px" src="https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png"/>
## API
### Compromise/one
##### Output
- **[.text()](https://observablehq.com/@spencermountain/compromise-text)** - return the document as text
- **[.json()](https://observablehq.com/@spencermountain/compromise-json)** - return the document as data
- **[.debug()](https://observablehq.com/@spencermountain/compromise-output)** - pretty-print the interpreted document
- **[.out()](https://observablehq.com/@spencermountain/compromise-output)** - a named or custom output
- **[.html({})](https://observablehq.com/@spencermountain/compromise-html)** - output custom html tags for matches
- **[.wrap({})](https://observablehq.com/@spencermountain/compromise-output)** - produce custom output for document matches
##### Utils
- **[.found](https://observablehq.com/@spencermountain/compromise-utils)** _[getter]_ - is this document empty?
- **[.docs](https://observablehq.com/@spencermountain/compromise-utils)** _[getter]_ get term objects as json
- **[.length](https://observablehq.com/@spencermountain/compromise-utils)** _[getter]_ - count the # of characters in the document (string length)
- **[.isView](https://observablehq.com/@spencermountain/compromise-utils)** _[getter]_ - identify a compromise object
- **[.compute()](https://observablehq.com/@spencermountain/compromise-compute)** - run a named analysis on the document
- **[.clone()](https://observablehq.com/@spencermountain/compromise-utils)** - deep-copy the document, so that no references remain
- **[.termList()](https://observablehq.com/@spencermountain/compromise-accessors)** - return a flat list of all Term objects in match
- **[.cache({})](https://observablehq.com/@spencermountain/compromise-cache)** - freeze the current state of the document, for speed-purposes
- **[.uncache()](https://observablehq.com/@spencermountain/compromise-cache)** - un-freezes the current state of the document, so it may be transformed
- **[.freeze({})](https://observablehq.com/@spencermountain/compromise-freeze)** - prevent any tags from being removed, in these terms
- **[.unfreeze({})](https://observablehq.com/@spencermountain/compromise-freeze)** - allow tags to change again, as default
##### Accessors
- **[.all()](https://observablehq.com/@spencermountain/compromise-utils)** - return the whole original document ('zoom out')
- **[.terms()](https://observablehq.com/@spencermountain/compromise-selections)** - split-up results by each individual term
- **[.first(n)](https://observablehq.com/@spencermountain/compromise-accessors)** - use only the first result(s)
- **[.last(n)](https://observablehq.com/@spencermountain/compromise-accessors)** - use only the last result(s)
- **[.slice(n,n)](https://observablehq.com/@spencermountain/compromise-accessors)** - grab a subset of the results
- **[.eq(n)](https://observablehq.com/@spencermountain/compromise-accessors)** - use only the nth result
- **[.firstTerms()](https://observablehq.com/@spencermountain/compromise-accessors)** - get the first word in each match
- **[.lastTerms()](https://observablehq.com/@spencermountain/compromise-accessors)** - get the end word in each match
- **[.fullSentences()](https://observablehq.com/@spencermountain/compromise-accessors)** - get the whole sentence for each match
- **[.groups()](https://observablehq.com/@spencermountain/compromise-accessors)** - grab any named capture-groups from a match
- **[.wordCount()](https://observablehq.com/@spencermountain/compromise-utils)** - count the # of terms in the document
- **[.confidence()](https://observablehq.com/@spencermountain/compromise-utils)** - an average score for pos tag interpretations
##### Match
_(match methods use the [match-syntax](https://docs.compromise.cool/compromise-match-syntax).)_
- **[.match('')](https://observablehq.com/@spencermountain/compromise-match)** - return a new Doc, with this one as a parent
- **[.not('')](https://observablehq.com/@spencermountain/compromise-match)** - return all results except for this
- **[.matchOne('')](https://observablehq.com/@spencermountain/compromise-match)** - return only the first match
- **[.if('')](https://observablehq.com/@spencermountain/compromise-match)** - return each current phrase, only if it contains this match ('only')
- **[.ifNo('')](https://observablehq.com/@spencermountain/compromise-match)** - Filter-out any current phrases that have this match ('notIf')
- **[.has('')](https://observablehq.com/@spencermountain/compromise-match)** - Return a boolean if this match exists
- **[.before('')](https://observablehq.com/@spencermountain/compromise-match)** - return all terms before a match, in each phrase
- **[.after('')](https://observablehq.com/@spencermountain/compromise-match)** - return all terms after a match, in each phrase
- **[.union()](https://observablehq.com/@spencermountain/compromise-set)** - return combined matches without duplicates
- **[.intersection()](https://observablehq.com/@spencermountain/compromise-set)** - return only duplicate matches
- **[.complement()](https://observablehq.com/@spencermountain/compromise-set)** - get everything not in another match
- **[.settle()](https://observablehq.com/@spencermountain/compromise-set)** - remove overlaps from matches
- **[.growRight('')](https://observablehq.com/@spencermountain/compromise-match)** - add any matching terms immediately after each match
- **[.growLeft('')](https://observablehq.com/@spencermountain/compromise-match)** - add any matching terms immediately before each match
- **[.grow('')](https://observablehq.com/@spencermountain/compromise-match)** - add any matching terms before or after each match
- **[.sweep(net)](https://observablehq.com/@spencermountain/compromise-sweep)** - apply a series of match objects to the document
- **[.splitOn('')](https://observablehq.com/@spencermountain/compromise-split)** - return a Document with three parts for every match ('splitOn')
- **[.splitBefore('')](https://observablehq.com/@spencermountain/compromise-split)** - partition a phrase before each matching segment
- **[.splitAfter('')](https://observablehq.com/@spencermountain/compromise-split)** - partition a phrase after each matching segment
- **[.join()](https://observablehq.com/@spencermountain/compromise-split)** - merge any neighbouring terms in each match
- **[.joinIf(leftMatch, rightMatch)](https://observablehq.com/@spencermountain/compromise-split)** - merge any neighbouring terms under given conditions
- **[.lookup([])](https://observablehq.com/@spencermountain/compromise-match)** - quick find for an array of string matches
- **[.autoFill()](https://observablehq.com/@spencermountain/compromise-typeahead)** - create type-ahead assumptions on the document
##### Tag
- **[.tag('')](https://observablehq.com/@spencermountain/compromise-tagger)** - Give all terms the given tag
- **[.tagSafe('')](https://observablehq.com/@spencermountain/compromise-tagger)** - Only apply tag to terms if it is consistent with current tags
- **[.unTag('')](https://observablehq.com/@spencermountain/compromise-tagger)** - Remove this term from the given terms
- **[.canBe('')](https://observablehq.com/@spencermountain/compromise-tagger)** - return only the terms that can be this tag
##### Case
- **[.toLowerCase()](https://observablehq.com/@spencermountain/compromise-case)** - turn every letter of every term to lower-cse
- **[.toUpperCase()](https://observablehq.com/@spencermountain/compromise-case)** - turn every letter of every term to upper case
- **[.toTitleCase()](https://observablehq.com/@spencermountain/compromise-case)** - upper-case the first letter of each term
- **[.toCamelCase()](https://observablehq.com/@spencermountain/compromise-case)** - remove whitespace and title-case each term
##### Whitespace
- **[.pre('')](https://observablehq.com/@spencermountain/compromise-whitespace)** - add this punctuation or whitespace before each match
- **[.post('')](https://observablehq.com/@spencermountain/compromise-whitespace)** - add this punctuation or whitespace after each match
- **[.trim()](https://observablehq.com/@spencermountain/compromise-whitespace)** - remove start and end whitespace
- **[.hyphenate()](https://observablehq.com/@spencermountain/compromise-whitespace)** - connect words with hyphen, and remove whitespace
- **[.dehyphenate()](https://observablehq.com/@spencermountain/compromise-whitespace)** - remove hyphens between words, and set whitespace
- **[.toQuotations()](https://observablehq.com/@spencermountain/compromise-whitespace)** - add quotation marks around these matches
- **[.toParentheses()](https://observablehq.com/@spencermountain/compromise-whitespace)** - add brackets around these matches
##### Loops
- **[.map(fn)](https://observablehq.com/@spencermountain/compromise-loops)** - run each phrase through a function, and create a new document
- **[.forEach(fn)](https://observablehq.com/@spencermountain/compromise-loops)** - run a function on each phrase, as an individual document
- **[.filter(fn)](https://observablehq.com/@spencermountain/compromise-loops)** - return only the phrases that return true
- **[.find(fn)](https://observablehq.com/@spencermountain/compromise-loops)** - return a document with only the first phrase that matches
- **[.some(fn)](https://observablehq.com/@spencermountain/compromise-loops)** - return true or false if there is one matching phrase
- **[.random(fn)](https://observablehq.com/@spencermountain/compromise-loops)** - sample a subset of the results
##### Insert
- **[.replace(match, replace)](https://observablehq.com/@spencermountain/compromise-insert)** - search and replace match with new content
- **[.replaceWith(replace)](https://observablehq.com/@spencermountain/compromise-insert)** - substitute-in new text
- **[.remove()](https://observablehq.com/@spencermountain/compromise-insert)** - fully remove these terms from the document
- **[.insertBefore(str)](https://observablehq.com/@spencermountain/compromise-insert)** - add these new terms to the front of each match (prepend)
- **[.insertAfter(str)](https://observablehq.com/@spencermountain/compromise-insert)** - add these new terms to the end of each match (append)
- **[.concat()](https://observablehq.com/@spencermountain/compromise-insert)** - add these new things to the end
- **[.swap(fromLemma, toLemma)](https://observablehq.com/@spencermountain/compromise-root)** - smart replace of root-words,using proper conjugation
##### Transform
- **[.sort('method')](https://observablehq.com/@spencermountain/compromise-sorting)** - re-arrange the order of the matches (in place)
- **[.reverse()](https://observablehq.com/@spencermountain/compromise-sorting)** - reverse the order of the matches, but not the words
- **[.unique()](https://observablehq.com/@spencermountain/compromise-sorting)** - remove any duplicate matches
##### Lib
_(these methods are on the main `nlp` object)_
- **[nlp.tokenize(str)](https://observablehq.com/@spencermountain/compromise-tokenization)** - parse text without running POS-tagging
- **[nlp.lazy(str, match)](https://observablehq.com/@spencermountain/compromise-performance)** - scan through a text with minimal analysis
- **[nlp.plugin({})](https://observablehq.com/@spencermountain/compromise-constructor-methods)** - mix in a compromise-plugin
- **[nlp.parseMatch(str)](https://observablehq.com/@spencermountain/compromise-constructor-methods)** - pre-parse any match statements into json
- **[nlp.world()](https://observablehq.com/@spencermountain/compromise-constructor-methods)** - grab or change library internals
- **[nlp.model()](https://observablehq.com/@spencermountain/compromise-constructor-methods)** - grab all current linguistic data
- **[nlp.methods()](https://observablehq.com/@spencermountain/compromise-constructor-methods)** - grab or change internal methods
- **[nlp.hooks()](https://observablehq.com/@spencermountain/compromise-constructor-methods)** - see which compute methods run automatically
- **[nlp.verbose(mode)](https://observablehq.com/@spencermountain/compromise-constructor-methods)** - log our decision-making for debugging
- **[nlp.version](https://observablehq.com/@spencermountain/compromise-constructor-methods)** - current semver version of the library
- **[nlp.addWords(obj, isFrozen?)](https://observablehq.com/@spencermountain/compromise-plugin)** - add new words to the lexicon
- **[nlp.addTags(obj)](https://observablehq.com/@spencermountain/compromise-plugin)** - add new tags to the tagSet
- **[nlp.typeahead(arr)](https://observablehq.com/@spencermountain/compromise-typeahead)** - add words to the auto-fill dictionary
- **[nlp.buildTrie(arr)](https://observablehq.com/@spencermountain/compromise-lookup)** - compile a list of words into a fast lookup form
- **[nlp.buildNet(arr)](https://observablehq.com/@spencermountain/compromise-sweep)** - compile a list of matches into a fast match form
<!-- spacer -->
<img height="30px" src="https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png"/>
### compromise/two:
##### Contractions
- **[.contractions()](https://observablehq.com/@spencermountain/compromise-contractions)** - things like "didn't"
- **[.contractions().expand()](https://observablehq.com/@spencermountain/compromise-contractions)** - things like "didn't"
- **[.contract()](https://observablehq.com/@spencermountain/compromise-contractions)** - things like "didn't"
<!-- spacer -->
<img height="30px" src="https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png"/>
### compromise/three:
- **[.normalize({})](https://observablehq.com/@spencermountain/compromise-normalization)** - clean-up the text in various ways
##### Nouns
- **[.nouns()](https://observablehq.com/@spencermountain/nouns)** - return any subsequent terms tagged as a Noun
- **[.nouns().json()](https://observablehq.com/@spencermountain/nouns)** - overloaded output with noun metadata
- **[.nouns().parse()](https://observablehq.com/@spencermountain/nouns)** - get tokenized noun-phrase
- **[.nouns().isPlural()](https://observablehq.com/@spencermountain/nouns)** - return only plural nouns
- **[.nouns().isSingular()](https://observablehq.com/@spencermountain/nouns)** - return only singular nouns
- **[.nouns().toPlural()](https://observablehq.com/@spencermountain/nouns)** - `'football captain' → 'football captains'`
- **[.nouns().toSingular()](https://observablehq.com/@spencermountain/nouns)** - `'turnovers' → 'turnover'`
- **[.nouns().adjectives()](https://observablehq.com/@spencermountain/nouns)** - get any adjectives describing this noun
##### Verbs
- **[.verbs()](https://observablehq.com/@spencermountain/verbs)** - return any subsequent terms tagged as a Verb
- **[.verbs().json()](https://observablehq.com/@spencermountain/verbs)** - overloaded output with verb metadata
- **[.verbs().parse()](https://observablehq.com/@spencermountain/verbs)** - get tokenized verb-phrase
- **[.verbs().subjects()](https://observablehq.com/@spencermountain/verbs)** - what is doing the verb action
- **[.verbs().adverbs()](https://observablehq.com/@spencermountain/verbs)** - return the adverbs describing this verb.
- **[.verbs().isSingular()](https://observablehq.com/@spencermountain/verbs)** - return singular verbs like 'spencer walks'
- **[.verbs().isPlural()](https://observablehq.com/@spencermountain/verbs)** - return plural verbs like 'we walk'
- **[.verbs().isImperative()](https://observablehq.com/@spencermountain/verbs)** - only instruction verbs like 'eat it!'
- **[.verbs().toPastTense()](https://observablehq.com/@spencermountain/verbs)** - `'will go' → 'went'`
- **[.verbs().toPresentTense()](https://observablehq.com/@spencermountain/verbs)** - `'walked' → 'walks'`
- **[.verbs().toFutureTense()](https://observablehq.com/@spencermountain/verbs)** - `'walked' → 'will walk'`
- **[.verbs().toInfinitive()](https://observablehq.com/@spencermountain/verbs)** - `'walks' → 'walk'`
- **[.verbs().toGerund()](https://observablehq.com/@spencermountain/verbs)** - `'walks' → 'walking'`
- **[.verbs().toPastParticiple()](https://observablehq.com/@spencermountain/verbs)** - `'drive' → 'had driven'`
- **[.verbs().conjugate()](https://observablehq.com/@spencermountain/verbs)** - return all conjugations of these verbs
- **[.verbs().isNegative()](https://observablehq.com/@spencermountain/verbs)** - return verbs with 'not', 'never' or 'no'
- **[.verbs().isPositive()](https://observablehq.com/@spencermountain/verbs)** - only verbs without 'not', 'never' or 'no'
- **[.verbs().toNegative()](https://observablehq.com/@spencermountain/verbs)** - `'went' → 'did not go'`
- **[.verbs().toPositive()](https://observablehq.com/@spencermountain/verbs)** - `"didn't study" → 'studied'`
##### Numbers
- **[.numbers()](https://observablehq.com/@spencermountain/compromise-values)** - grab all written and numeric values
- **[.numbers().parse()](https://observablehq.com/@spencermountain/compromise-values)** - get tokenized number phrase
- **[.numbers().get()](https://observablehq.com/@spencermountain/compromise-values)** - get a simple javascript number
- **[.numbers().json()](https://observablehq.com/@spencermountain/compromise-values)** - overloaded output with number metadata
- **[.numbers().toNumber()](https://observablehq.com/@spencermountain/compromise-values)** - convert 'five' to `5`
- **[.numbers().toLocaleString()](https://observablehq.com/@spencermountain/compromise-values)** - add commas, or nicer formatting for numbers
- **[.numbers().toText()](https://observablehq.com/@spencermountain/compromise-values)** - convert '5' to `five`
- **[.numbers().toOrdinal()](https://observablehq.com/@spencermountain/compromise-values)** - convert 'five' to `fifth` or `5th`
- **[.numbers().toCardinal()](https://observablehq.com/@spencermountain/compromise-values)** - convert 'fifth' to `five` or `5`
- **[.numbers().isOrdinal()](https://observablehq.com/@spencermountain/compromise-values)** - return only ordinal numbers
- **[.numbers().isCardinal()](https://observablehq.com/@spencermountain/compromise-values)** - return only cardinal numbers
- **[.numbers().isEqual(n)](https://observablehq.com/@spencermountain/compromise-values)** - return numbers with this value
- **[.numbers().greaterThan(min)](https://observablehq.com/@spencermountain/compromise-values)** - return numbers bigger than n
- **[.numbers().lessThan(max)](https://observablehq.com/@spencermountain/compromise-values)** - return numbers smaller than n
- **[.numbers().between(min, max)](https://observablehq.com/@spencermountain/compromise-values)** - return numbers between min and max
- **[.numbers().isUnit(unit)](https://observablehq.com/@spencermountain/compromise-values)** - return only numbers in the given unit, like 'km'
- **[.numbers().set(n)](https://observablehq.com/@spencermountain/compromise-values)** - set number to n
- **[.numbers().add(n)](https://observablehq.com/@spencermountain/compromise-values)** - increase number by n
- **[.numbers().subtract(n)](https://observablehq.com/@spencermountain/compromise-values)** - decrease number by n
- **[.numbers().increment()](https://observablehq.com/@spencermountain/compromise-values)** - increase number by 1
- **[.numbers().decrement()](https://observablehq.com/@spencermountain/compromise-values)** - decrease number by 1
- **[.money()](https://observablehq.com/@spencermountain/compromise-values)** - things like `'$2.50'`
- **[.money().get()](https://observablehq.com/@spencermountain/compromise-values)** - retrieve the parsed amount(s) of money
- **[.money().json()](https://observablehq.com/@spencermountain/compromise-values)** - currency + number info
- **[.money().currency()](https://observablehq.com/@spencermountain/compromise-values)** - which currency the money is in
- **[.fractions()](https://observablehq.com/@spencermountain/compromise-values)** - like '2/3rds' or 'one out of five'
- **[.fractions().parse()](https://observablehq.com/@spencermountain/compromise-values)** - get tokenized fraction
- **[.fractions().get()](https://observablehq.com/@spencermountain/compromise-values)** - simple numerator, denominator data
- **[.fractions().json()](https://observablehq.com/@spencermountain/compromise-values)** - json method overloaded with fractions data
- **[.fractions().toDecimal()](https://observablehq.com/@spencermountain/compromise-values)** - '2/3' -> '0.66'
- **[.fractions().normalize()](https://observablehq.com/@spencermountain/compromise-values)** - 'four out of 10' -> '4/10'
- **[.fractions().toText()](https://observablehq.com/@spencermountain/compromise-values)** - '4/10' -> 'four tenths'
- **[.fractions().toPercentage()](https://observablehq.com/@spencermountain/compromise-values)** - '4/10' -> '40%'
- **[.percentages()](https://observablehq.com/@spencermountain/compromise-values)** - like '2.5%'
- **[.percentages().get()](https://observablehq.com/@spencermountain/compromise-values)** - return the percentage number / 100
- **[.percentages().json()](https://observablehq.com/@spencermountain/compromise-values)** - json overloaded with percentage information
- **[.percentages().toFraction()](https://observablehq.com/@spencermountain/compromise-values)** - '80%' -> '8/10'
##### Sentences
- **[.sentences()](https://observablehq.com/@spencermountain/compromise-sentences)** - return a sentence class with additional methods
- **[.sentences().json()](https://observablehq.com/@spencermountain/compromise-sentences)** - overloaded output with sentence metadata
<!-- - **[.sentences().subjects()](https://observablehq.com/@spencermountain/compromise-sentences)** - return the main noun of each sentence -->
- **[.sentences().toPastTense()](https://observablehq.com/@spencermountain/compromise-sentences)** - `he walks` -> `he walked`
- **[.sentences().toPresentTense()](https://observablehq.com/@spencermountain/compromise-sentences)** - `he walked` -> `he walks`
- **[.sentences().toFutureTense()](https://observablehq.com/@spencermountain/compromise-sentences)** -- `he walks` -> `he will walk`
- **[.sentences().toInfinitive()](https://observablehq.com/@spencermountain/compromise-sentences)** -- verb root-form `he walks` -> `he walk`
- **[.sentences().toNegative()](https://observablehq.com/@spencermountain/compromise-sentences)** - - `he walks` -> `he didn't walk`
- **[.sentences().isQuestion()](https://observablehq.com/@spencermountain/compromise-sentences)** - return questions with a `?`
- **[.sentences().isExclamation()](https://observablehq.com/@spencermountain/compromise-sentences)** - return sentences with a `!`
- **[.sentences().isStatement()](https://observablehq.com/@spencermountain/compromise-sentences)** - return sentences without `?` or `!`
##### Adjectives
- **[.adjectives()](https://observablehq.com/@spencermountain/compromise-selections)** - things like `'quick'`
- **[.adjectives().json()](https://observablehq.com/@spencermountain/compromise-selections)** - get adjective metadata
- **[.adjectives().conjugate()](https://observablehq.com/@spencermountain/compromise-selections)** - return all inflections of these adjectives
- **[.adjectives().adverbs()](https://observablehq.com/@spencermountain/compromise-selections)** - get adverbs describing this adjective
- **[.adjectives().toComparative()](https://observablehq.com/@spencermountain/compromise-selections)** - 'quick' -> 'quicker'
- **[.adjectives().toSuperlative()](https://observablehq.com/@spencermountain/compromise-selections)** - 'quick' -> 'quickest'
- **[.adjectives().toAdverb()](https://observablehq.com/@spencermountain/compromise-selections)** - 'quick' -> 'quickly'
- **[.adjectives().toNoun()](https://observablehq.com/@spencermountain/compromise-selections)** - 'quick' -> 'quickness'
##### Misc selections
- **[.clauses()](https://observablehq.com/@spencermountain/compromise-selections)** - split-up sentences into multi-term phrases
- **[.chunks()](https://observablehq.com/@spencermountain/compromise-selections)** - split-up sentences noun-phrases and verb-phrases
- **[.hyphenated()](https://observablehq.com/@spencermountain/compromise-selections)** - all terms connected with a hyphen or dash like `'wash-out'`
- **[.phoneNumbers()](https://observablehq.com/@spencermountain/compromise-selections)** - things like `'(939) 555-0113'`
- **[.hashTags()](https://observablehq.com/@spencermountain/compromise-selections)** - things like `'#nlp'`
- **[.emails()](https://observablehq.com/@spencermountain/compromise-selections)** - things like `'hi@compromise.cool'`
- **[.emoticons()](https://observablehq.com/@spencermountain/compromise-selections)** - things like `:)`
- **[.emojis()](https://observablehq.com/@spencermountain/compromise-selections)** - things like `💋`
- **[.atMentions()](https://observablehq.com/@spencermountain/compromise-selections)** - things like `'@nlp_compromise'`
- **[.urls()](https://observablehq.com/@spencermountain/compromise-selections)** - things like `'compromise.cool'`
- **[.pronouns()](https://observablehq.com/@spencermountain/compromise-selections)** - things like `'he'`
- **[.conjunctions()](https://observablehq.com/@spencermountain/compromise-selections)** - things like `'but'`
- **[.prepositions()](https://observablehq.com/@spencermountain/compromise-selections)** - things like `'of'`
- **[.abbreviations()](https://observablehq.com/@spencermountain/compromise-selections)** - things like `'Mrs.'`
- **[.people()](https://observablehq.com/@spencermountain/topics-named-entity-recognition)** - names like 'John F. Kennedy'
- **[.people().json()](https://observablehq.com/@spencermountain/topics-named-entity-recognition)** - get person-name metadata
- **[.people().parse()](https://observablehq.com/@spencermountain/topics-named-entity-recognition)** - get person-name interpretation
- **[.places()](https://observablehq.com/@spencermountain/topics-named-entity-recognition)** - like 'Paris, France'
- **[.organizations()](https://observablehq.com/@spencermountain/topics-named-entity-recognition)** - like 'Google, Inc'
- **[.topics()](https://observablehq.com/@spencermountain/topics-named-entity-recognition)** - `people()` + `places()` + `organizations()`
- **[.adverbs()](https://observablehq.com/@spencermountain/compromise-selections)** - things like `'quickly'`
- **[.adverbs().json()](https://observablehq.com/@spencermountain/compromise-selections)** - get adverb metadata
- **[.acronyms()](https://observablehq.com/@spencermountain/compromise-selections)** - things like `'FBI'`
- **[.acronyms().strip()](https://observablehq.com/@spencermountain/compromise-selections)** - remove periods from acronyms
- **[.acronyms().addPeriods()](https://observablehq.com/@spencermountain/compromise-selections)** - add periods to acronyms
- **[.parentheses()](https://observablehq.com/@spencermountain/compromise-selections)** - return anything inside (parentheses)
- **[.parentheses().strip()](https://observablehq.com/@spencermountain/compromise-selections)** - remove brackets
- **[.possessives()](https://observablehq.com/@spencermountain/compromise-selections)** - things like `"Spencer's"`
- **[.possessives().strip()](https://observablehq.com/@spencermountain/compromise-selections)** - "Spencer's" -> "Spencer"
- **[.quotations()](https://observablehq.com/@spencermountain/compromise-selections)** - return any terms inside paired quotation marks
- **[.quotations().strip()](https://observablehq.com/@spencermountain/compromise-selections)** - remove quotation marks
- **[.slashes()](https://observablehq.com/@spencermountain/compromise-selections)** - return any terms grouped by slashes
- **[.slashes().split()](https://observablehq.com/@spencermountain/compromise-selections)** - turn 'love/hate' into 'love hate'
<p>
<img height="85px" src="https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png"/>
</p>
<div align="center">
<img src="https://user-images.githubusercontent.com/399657/68221814-05ed1680-ffb8-11e9-8b6b-c7528d163871.png"/>
</div>
### .extend():
This library comes with a considerate, common-sense baseline for english grammar.
You're free to change, or lay-waste to any settings - which is the fun part actually.
the easiest part is just to suggest tags for any given words:
```js
let myWords = {
kermit: 'FirstName',
fozzie: 'FirstName',
}
let doc = nlp(muppetText, myWords)
```
or make heavier changes with a [compromise-plugin](https://observablehq.com/@spencermountain/compromise-plugins).
```js
import nlp from 'compromise'
nlp.extend({
// add new tags
tags: {
Character: {
isA: 'Person',
notA: 'Adjective',
},
},
// add or change words in the lexicon
words: {
kermit: 'Character',
gonzo: 'Character',
},
// change inflections
irregulars: {
get: {
pastTense: 'gotten',
gerund: 'gettin',
},
},
// add new methods to compromise
api: View => {
View.prototype.kermitVoice = function () {
this.sentences().prepend('well,')
this.match('i [(am|was)]').prepend('um,')
return this
}
},
})
```
<div align="right">
<a href="https://docs.compromise.cool/compromise-plugins">.plugin() docs</a>
</div>
<div align="center">
<img height="50px" src="https://user-images.githubusercontent.com/399657/68221848-11404200-ffb8-11e9-90cd-3adee8d8564f.png"/>
</div>
<!-- spacer -->
<div >
<img height="50px" src="https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png"/>
</div>
### Docs:
##### gentle introduction:
- **[#1) Input → output](https://docs.compromise.cool/tutorial-1)**
- **[#2) Match & transform](https://docs.compromise.cool/compromise-tutorial-2)**
- **[#3) Making a chat-bot](https://docs.compromise.cool/compromise-making-a-bot)**
<!-- * **[Tutorial #4]()** - Making a plugin -->
<div >
<img height="25px" src="https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png"/>
</div>
##### Documentation:
| Concepts | API | Plugins |
| ------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------: | -------------------------------------------------------------------------------------: |
| [Accuracy](https://observablehq.com/@spencermountain/compromise-accuracy) | [Accessors](https://observablehq.com/@spencermountain/compromise-accessors) | [Adjectives](https://observablehq.com/@spencermountain/compromise-adjectives) |
| [Caching](https://observablehq.com/@spencermountain/compromise-cache) | [Constructor-methods](https://observablehq.com/@spencermountain/compromise-constructor-methods) | [Dates](https://observablehq.com/@spencermountain/compromise-dates) |
| [Case](https://observablehq.com/@spencermountain/compromise-case) | [Contractions](https://observablehq.com/@spencermountain/compromise-contractions) | [Export](https://observablehq.com/@spencermountain/compromise-export) |
| [Filesize](https://observablehq.com/@spencermountain/compromise-filesize) | [Insert](https://observablehq.com/@spencermountain/compromise-insert) | [Hash](https://observablehq.com/@spencermountain/compromise-hash) |
| [Internals](https://observablehq.com/@spencermountain/compromise-internals) | [Json](https://observablehq.com/@spencermountain/compromise-json) | [Html](https://observablehq.com/@spencermountain/compromise-html) |
| [Justification](https://observablehq.com/@spencermountain/compromise-justification) | [Character Offsets](https://observablehq.com/@spencermountain/compromise-offsets) | [Keypress](https://observablehq.com/@spencermountain/compromise-keypress) |
| [Lexicon](https://observablehq.com/@spencermountain/compromise-lexicon) | [Loops](https://observablehq.com/@spencermountain/compromise-loops) | [Ngrams](https://observablehq.com/@spencermountain/compromise-ngram) |
| [Match-syntax](https://observablehq.com/@spencermountain/compromise-match-syntax) | [Match](https://observablehq.com/@spencermountain/compromise-match) | [Numbers](https://observablehq.com/@spencermountain/compromise-values) |
| [Performance](https://observablehq.com/@spencermountain/compromise-performance) | [Nouns](https://observablehq.com/@spencermountain/nouns) | [Paragraphs](https://observablehq.com/@spencermountain/compromise-paragraphs) |
| [Plugins](https://observablehq.com/@spencermountain/compromise-plugins) | [Output](https://observablehq.com/@spencermountain/compromise-output) | [Scan](https://observablehq.com/@spencermountain/compromise-scan) |
| [Projects](https://observablehq.com/@spencermountain/compromise-projects) | [Selections](https://observablehq.com/@spencermountain/compromise-selections) | [Sentences](https://observablehq.com/@spencermountain/compromise-sentences) |
| [Tagger](https://observablehq.com/@spencermountain/compromise-tagger) | [Sorting](https://observablehq.com/@spencermountain/compromise-sorting) | [Syllables](https://observablehq.com/@spencermountain/compromise-syllables) |
| [Tags](https://observablehq.com/@spencermountain/compromise-tags) | [Split](https://observablehq.com/@spencermountain/compromise-split) | [Pronounce](https://observablehq.com/@spencermountain/compromise-pronounce) |
| [Tokenization](https://observablehq.com/@spencermountain/compromise-tokenization) | [Text](https://observablehq.com/@spencermountain/compromise-text) | [Strict](https://observablehq.com/@spencermountain/compromise-strict) |
| [Named-Entities](https://observablehq.com/@spencermountain/topics-named-entity-recognition) | [Utils](https://observablehq.com/@spencermountain/compromise-utils) | [Penn-tags](https://observablehq.com/@spencermountain/compromise-penn-tags) |
| [Whitespace](https://observablehq.com/@spencermountain/compromise-whitespace) | [Verbs](https://observablehq.com/@spencermountain/verbs) | [Typeahead](https://observablehq.com/@spencermountain/compromise/compromise-typeahead) |
| [World data](https://observablehq.com/@spencermountain/compromise-world) | [Normalization](https://observablehq.com/@spencermountain/compromise-normalization) | [Sweep](https://observablehq.com/@spencermountain/compromise-sweep) |
| [Fuzzy-matching](https://observablehq.com/@spencermountain/compromise-fuzzy-matching) | [Typescript](https://observablehq.com/@spencermountain/compromise-typescript) | [Mutation](https://observablehq.com/@spencermountain/compromise-mutation) |
| [Root-forms](https://observablehq.com/@spencermountain/compromise-root) |
<div >
<img height="25px" src="https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png"/>
</div>
##### Talks:
- **[Language as an Interface](https://www.youtube.com/watch?v=WuPVS2tCg8s)** - by Spencer Kelly
- **[Coding Chat Bots](https://www.youtube.com/watch?v=c_hmwFwvO0U)** - by KahWee Teng
- **[On Typing and data](https://vimeo.com/496095722)** - by Spencer Kelly
##### Articles:
- **[Geocoding Social Conversations with NLP and JavaScript](http://compromise.cool)** - by Microsoft
- **[Microservice Recipe](https://eventn.com/recipes/text-parsing-with-nlp-compromise)** - by Eventn
- **[Adventure Game Sentence Parsing with Compromise](https://killalldefects.com/2020/02/20/adventure-game-sentence-parsing-with-compromise/)**
- **[Building Text-Based Games](https://killalldefects.com/2019/09/24/building-text-based-games-with-compromise-nlp/)** - by Matt Eland
- **[Fun with javascript in BigQuery](https://medium.com/@hoffa/new-in-bigquery-persistent-udfs-c9ea4100fd83#6e09)** - by Felipe Hoffa
- **[Natural Language Processing... in the Browser?](https://dev.to/charlesdlandau/natural-language-processing-in-the-browser-52hj)** - by Charles Landau
##### Some fun Applications:
- **[Automated Bechdel Test](https://github.com/guardian/bechdel-test)** - by The Guardian
- **[Story generation framework](https://perchance.org/welcome)** - by Jose Phrocca
- **[Tumbler blog of lists](https://leanstooneside.tumblr.com/)** - horse-ebooks-like lists - by Michael Paulukonis
- **[Video Editing from Transcription](https://newtheory.io/)** - by New Theory
- **[Browser extension Fact-checking](https://github.com/AlexanderKidd/FactoidL)** - by Alexander Kidd
- **[Siri shortcut](https://routinehub.co/shortcut/3260)** - by Michael Byrns
- **[Amazon skill](https://github.com/tajddin/voiceplay)** - by Tajddin Maghni
- **[Tasking Slack-bot](https://github.com/kevinsuh/toki)** - by Kevin Suh
[[see more]](https://observablehq.com/@spencermountain/compromise-projects)
##### Comparisons
- [Compromise and Spacy](https://observablehq.com/@spencermountain/compromise-and-spacy)
- [Compromise and NLTK](https://observablehq.com/@spencermountain/compromise-and-nltk)
<!-- spacer -->
<div align="center">
<img height="25px" src="https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png"/>
<hr/>
</div>
<div align="center">
<img height="50px" src="https://user-images.githubusercontent.com/399657/68221632-b9094000-ffb7-11e9-99e0-b48edd6cdf8a.png"/>
</div>
<!-- <div align="center">
<img height="50px" src="https://user-images.githubusercontent.com/399657/68221824-09809d80-ffb8-11e9-9ef0-6ed3574b0ce8.png"/>
</div> -->
### Plugins:
These are some helpful extensions:
##### Dates
`npm install compromise-dates`
- **[.dates()](https://observablehq.com/@spencermountain/compromise-dates)** - find dates like `June 8th` or `03/03/18`
- **[.dates().get()](https://observablehq.com/@spencermountain/compromise-dates)** - simple start/end json result
- **[.dates().json()](https://observablehq.com/@spencermountain/compromise-dates)** - overloaded output with date metadata
- **[.dates().format('')](https://observablehq.com/@spencermountain/compromise-dates)** - convert the dates to specific formats
- **[.dates().toShortForm()](https://observablehq.com/@spencermountain/compromise-dates)** - convert 'Wednesday' to 'Wed', etc
- **[.dates().toLongForm()](https://observablehq.com/@spencermountain/compromise-dates)** - convert 'Feb' to 'February', etc
- **[.durations()](https://observablehq.com/@spencermountain/compromise-dates)** - `2 weeks` or `5mins`
- **[.durations().get()](https://observablehq.com/@spencermountain/compromise-dates)** - return simple json for duration
- **[.durations().json()](https://observablehq.com/@spencermountain/compromise-dates)** - overloaded output with duration metadata
- **[.times()](https://observablehq.com/@spencermountain/compromise-dates)** - `4:30pm` or `half past five`
- **[.times().get()](https://observablehq.com/@spencermountain/compromise-dates)** - return simple json for times
- **[.times().json()](https://observablehq.com/@spencermountain/compromise-dates)** - overloaded output with time metadata
##### Stats
`npm install compromise-stats`
- **[.tfidf({})](https://observablehq.com/@spencermountain/compromise-tfidf)** - rank words by frequency and uniqueness
- **[.ngrams({})](https://observablehq.com/@spencermountain/compromise-ngram)** - list all repeating sub-phrases, by word-count
- **[.unigrams()](https://observablehq.com/@spencermountain/compromise-ngram)** - n-grams with one word
- **[.bigrams()](https://observablehq.com/@spencermountain/compromise-ngram)** - n-grams with two words
- **[.trigrams()](https://observablehq.com/@spencermountain/compromise-ngram)** - n-grams with three words
- **[.startgrams()](https://observablehq.com/@spencermountain/compromise-ngram)** - n-grams including the first term of a phrase
- **[.endgrams()](https://observablehq.com/@spencermountain/compromise-ngram)** - n-grams including the last term of a phrase
- **[.edgegrams()](https://observablehq.com/@spencermountain/compromise-ngram)** - n-grams including the first or last term of a phrase
##### Speech
`npm install compromise-syllables`
- **[.syllables()](https://observablehq.com/@spencermountain/compromise-syllables)** - split each term by its typical pronunciation
- **[.soundsLike()](https://observablehq.com/@spencermountain/compromise-soundsLike)** - produce a estimated pronunciation
##### Wikipedia
`npm install compromise-wikipedia`
- **[.wikipedia()](https://observablehq.com/@spencermountain/compromise-wikipedia)** - compressed article reconciliation
<!-- spacer -->
<div >
<img height="25px" src="https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png"/>
<hr/>
</div>
### Typescript
we're committed to typescript/deno support, both in main and in the official-plugins:
```ts
import nlp from 'compromise'
import stats from 'compromise-stats'
const nlpEx = nlp.extend(stats)
nlpEx('This is type safe!').ngrams({ min: 1 })
```
<div align="right">
<a href="https://docs.compromise.cool/compromise-typescript">typescript docs</a>
</div>
<div >
<img height="50px" src="https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png"/>
</div>
#### Limitations:
- **slash-support:**
We currently split slashes up as different words, like we do for hyphens. so things like this don't work:
<code>nlp('the koala eats/shoots/leaves').has('koala leaves') //false</code>
- **inter-sentence match:**
By default, sentences are the top-level abstraction.
Inter-sentence, or multi-sentence matches aren't supported without <a href="https://github.com/spencermountain/compromise/tree/master/plugins/paragraphs">a plugin</a>:
<code>nlp("that's it. Back to Winnipeg!").has('it back')//false</code>
- **nested match syntax:**
the <s>danger</s> beauty of regex is that you can recurse indefinitely.
Our match syntax is much weaker. Things like this are not <i>(yet)</i> possible:
<code>doc.match('(modern (major|minor))? general')</code>
complex matches must be achieved with successive **.match()** statements.
- **dependency parsing:**
Proper sentence transformation requires understanding the [syntax tree](https://en.wikipedia.org/wiki/Parse_tree) of a sentence, which we don't currently do.
We should! Help wanted with this.
##### FAQ
<ul align="left">
<p>
<details>
<summary>☂️ Isn't javascript too...</summary>
<p></p>
<ul>
yeah it is!
<br/>
it wasn't built to compete with NLTK, and may not fit every project.
<br/>
string processing is synchronous too, and parallelizing node processes is weird.
<br/>
See <a href="https://observablehq.com/@spencermountain/compromise-performance">here</a> for information about speed & performance, and
<a href="https://observablehq.com/@spencermountain/compromise-justification">here</a> for project motivations
</ul>
<p></p>
</details>
</p>
<p>
<details>
<summary>💃 Can it run on my arduino-watch?</summary>
<p></p>
<ul>
Only if it's water-proof!
<br/>
Read <a href="https://observablehq.com/@spencermountain/compromise-quickstart">quick start</a> for running compromise in workers, mobile apps, and all sorts of funny environments.
</ul>
<p></p>
</details>
</p>
<p>
<details>
<summary>🌎 Compromise in other Languages?</summary>
<p></p>
<ul>
we've got work-in-progress forks for <a href="https://github.com/nlp-compromise/de-compromise">German</a>, <a href="https://github.com/nlp-compromise/fr-compromise">French</a>, <a href="https://github.com/nlp-compromise/es-compromise">Spanish</a>, and <a href="https://github.com/nlp-compromise/it-compromise">Italian</a> in the same philosophy.
<br/>
and need some help.
</ul>
<p></p>
</details>
</p>
<p>
<details>
<summary>✨ Partial builds?</summary>
<p></p>
<ul>
we do offer a <a href="https://observablehq.com/@spencermountain/compromise-filesize">tokenize-only</a> build, which has the POS-tagger pulled-out.
<br/>
but otherwise, compromise isn't easily tree-shaken.
<br/>
the tagging methods are competitive, and greedy, so it's not recommended to pull things out.
<br/>
Note that without a full POS-tagging, the contraction-parser won't work perfectly. (<i>(spencer's cool)</i> vs. <i>(spencer's house)</i>)
<br/>
It's recommended to run the library fully.
</ul>
<p></p>
</details>
</p>
</ul>
<div align="center">
<img src="https://user-images.githubusercontent.com/399657/68221731-e8b84800-ffb7-11e9-8453-6395e0e903fa.png"/>
</div>
#### See Also:
- **[en-pos](https://github.com/finnlp/en-pos)** - very clever javascript pos-tagger _by [Alex Corvi](https://github.com/alexcorvi)_
- **[naturalNode](https://github.com/NaturalNode/natural)** - fancier statistical nlp in javascript
- **[winkJS](https://winkjs.org/)** - POS-tagger, tokenizer, machine-learning in javascript
- **[dariusk/pos-js ](https://github.com/dariusk/pos-js)** - fastTag fork in javascript
- **[compendium-js](https://github.com/Ulflander/compendium-js)** - POS and sentiment analysis in javascript
- **[nodeBox linguistics](https://www.nodebox.net/code/index.php/Linguistics)** - conjugation, inflection in javascript
- **[reText](https://github.com/wooorm/retext)** - very impressive [text utilities](https://github.com/wooorm/retext/blob/master/doc/plugins.md) in javascript
- **[superScript](https://github.com/superscriptjs/superscript)** - conversation engine in js
- **[jsPos](https://code.google.com/archive/p/jspos/)** - javascript build of the time-tested Brill-tagger
- **[spaCy](https://spacy.io/)** - speedy, multilingual tagger in C/python
- **[Prose](https://github.com/jdkato/prose/)** - quick tagger in Go by Joseph Kato
- **[TextBlob](https://github.com/sloria/TextBlob)** - python tagger
<img height="25px" src="https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png"/>
<b>MIT</b>
================================================
FILE: builds/compromise.js
================================================
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).nlp=t()}(this,(function(){"use strict";var e={methods:{one:{},two:{},three:{},four:{}},model:{one:{},two:{},three:{}},compute:{},hooks:[]};const t={compute:function(e){const{world:t}=this,n=t.compute;return"string"==typeof e&&n.hasOwnProperty(e)?n[e](this):(e=>"[object Array]"===Object.prototype.toString.call(e))(e)?e.forEach((r=>{t.compute.hasOwnProperty(r)?n[r](this):console.warn("no compute:",e)})):"function"==typeof e?e(this):console.warn("no compute:",e),this}};var n={forEach:function(e){return this.fullPointer.forEach(((t,n)=>{const r=this.update([t]);e(r,n)})),this},map:function(e,t){const n=this.fullPointer.map(((t,n)=>{const r=this.update([t]),o=e(r,n);return void 0===o?this.none():o}));if(0===n.length)return t||this.update([]);if(void 0!==n[0]){if("string"==typeof n[0])return n;if("object"==typeof n[0]&&(null===n[0]||!n[0].isView))return n}let r=[];return n.forEach((e=>{r=r.concat(e.fullPointer)})),this.toView(r)},filter:function(e){let t=this.fullPointer;t=t.filter(((t,n)=>{const r=this.update([t]);return e(r,n)}));return this.update(t)},find:function(e){const t=this.fullPointer.find(((t,n)=>{const r=this.update([t]);return e(r,n)}));return this.update([t])},some:function(e){return this.fullPointer.some(((t,n)=>{const r=this.update([t]);return e(r,n)}))},random:function(e=1){let t=this.fullPointer,n=Math.floor(Math.random()*t.length);return n+e>this.length&&(n=this.length-e,n=n<0?0:n),t=t.slice(n,n+e),this.update(t)}};const r={termList:function(){return this.methods.one.termList(this.docs)},terms:function(e){const t=this.match(".");return"number"==typeof e?t.eq(e):t},groups:function(e){if(e||0===e)return this.update(this._groups[e]||[]);const t={};return Object.keys(this._groups).forEach((e=>{t[e]=this.update(this._groups[e])})),t},eq:function(e){let t=this.pointer;return t||(t=this.docs.map(((e,t)=>[t]))),t[e]?this.update([t[e]]):this.none()},first:function(){return this.eq(0)},last:function(){const e=this.fullPointer.length-1;return this.eq(e)},firstTerms:function(){return this.match("^.")},lastTerms:function(){return this.match(".$")},slice:function(e,t){let n=this.pointer||this.docs.map(((e,t)=>[t]));return n=n.slice(e,t),this.update(n)},all:function(){return this.update().toView()},fullSentences:function(){const e=this.fullPointer.map((e=>[e[0]]));return this.update(e).toView()},none:function(){return this.update([])},isDoc:function(e){if(!e||!e.isView)return!1;const t=this.fullPointer,n=e.fullPointer;return!t.length!==n.length&&t.every(((e,t)=>!!n[t]&&(e[0]===n[t][0]&&e[1]===n[t][1]&&e[2]===n[t][2])))},wordCount:function(){return this.docs.reduce(((e,t)=>(e+=t.filter((e=>""!==e.text)).length,e)),0)},isFull:function(){const e=this.pointer;if(!e)return!0;if(0===e.length||0!==e[0][0])return!1;let t=0,n=0;return this.document.forEach((e=>t+=e.length)),this.docs.forEach((e=>n+=e.length)),t===n},getNth:function(e){return"number"==typeof e?this.eq(e):"string"==typeof e?this.if(e):this}};r.group=r.groups,r.fullSentence=r.fullSentences,r.sentence=r.fullSentences,r.lastTerm=r.lastTerms,r.firstTerm=r.firstTerms;const o=Object.assign({},r,t,n);o.get=o.eq;class View{constructor(t,n,r={}){[["document",t],["world",e],["_groups",r],["_cache",null],["viewType","View"]].forEach((e=>{Object.defineProperty(this,e[0],{value:e[1],writable:!0})})),this.ptrs=n}get docs(){let t=this.document;return this.ptrs&&(t=e.methods.one.getDoc(this.ptrs,this.document)),t}get pointer(){return this.ptrs}get methods(){return this.world.methods}get model(){return this.world.model}get hooks(){return this.world.hooks}get isView(){return!0}get found(){return this.docs.length>0}get length(){return this.docs.length}get fullPointer(){const{docs:e,ptrs:t,document:n}=this,r=t||e.map(((e,t)=>[t]));return r.map((e=>{let[t,r,o,a,i]=e;return r=r||0,o=o||(n[t]||[]).length,n[t]&&n[t][r]&&(a=a||n[t][r].id,n[t][o-1]&&(i=i||n[t][o-1].id)),[t,r,o,a,i]}))}update(e){const t=new View(this.document,e);if(this._cache&&e&&e.length>0){const n=[];e.forEach(((e,t)=>{const[r,o,a]=e;(1===e.length||0===o&&this.document[r].length===a)&&(n[t]=this._cache[r])})),n.length>0&&(t._cache=n)}return t.world=this.world,t}toView(e){return new View(this.document,e||this.pointer)}fromText(e){const{methods:t}=this,n=t.one.tokenize.fromString(e,this.world),r=new View(n);return r.world=this.world,r.compute(["normal","freeze","lexicon"]),this.world.compute.preTagger&&r.compute("preTagger"),r.compute("unfreeze"),r}clone(){let e=this.document.slice(0);e=e.map((e=>e.map((e=>((e=Object.assign({},e)).tags=new Set(e.tags),e)))));const t=this.update(this.pointer);return t.document=e,t._cache=this._cache,t}}Object.assign(View.prototype,o);const a=function(e){return e&&"object"==typeof e&&!Array.isArray(e)};function i(e,t){if(a(t))for(const n in t)a(t[n])?(e[n]||Object.assign(e,{[n]:{}}),i(e[n],t[n])):Object.assign(e,{[n]:t[n]});return e}const s=function(e,t,n,r){if(o=e,"[object Array]"===Object.prototype.toString.call(o))return void e.forEach((e=>s(e,t,n,r)));var o;const{methods:a,model:l,compute:u,hooks:c}=t;e.methods&&function(e,t){for(const n in t)e[n]=e[n]||{},Object.assign(e[n],t[n])}(a,e.methods),e.model&&i(l,e.model),e.irregulars&&function(e,t){const n=e.two.models||{};Object.keys(t).forEach((e=>{t[e].pastTense&&(n.toPast&&(n.toPast.ex[e]=t[e].pastTense),n.fromPast&&(n.fromPast.ex[t[e].pastTense]=e)),t[e].presentTense&&(n.toPresent&&(n.toPresent.ex[e]=t[e].presentTense),n.fromPresent&&(n.fromPresent.ex[t[e].presentTense]=e)),t[e].gerund&&(n.toGerund&&(n.toGerund.ex[e]=t[e].gerund),n.fromGerund&&(n.fromGerund.ex[t[e].gerund]=e)),t[e].comparative&&(n.toComparative&&(n.toComparative.ex[e]=t[e].comparative),n.fromComparative&&(n.fromComparative.ex[t[e].comparative]=e)),t[e].superlative&&(n.toSuperlative&&(n.toSuperlative.ex[e]=t[e].superlative),n.fromSuperlative&&(n.fromSuperlative.ex[t[e].superlative]=e))}))}(l,e.irregulars),e.compute&&Object.assign(u,e.compute),c&&(t.hooks=c.concat(e.hooks||[])),e.api&&e.api(n),e.lib&&Object.keys(e.lib).forEach((t=>r[t]=e.lib[t])),e.tags&&r.addTags(e.tags),e.words&&r.addWords(e.words),e.frozen&&r.addWords(e.frozen,!0),e.mutate&&e.mutate(t,r)},l=function(e){return"[object Array]"===Object.prototype.toString.call(e)},u=function(e,t,n){const{methods:r}=n,o=new t([]);if(o.world=n,"number"==typeof e&&(e=String(e)),!e)return o;if("string"==typeof e){return new t(r.one.tokenize.fromString(e,n))}if(a=e,"[object Object]"===Object.prototype.toString.call(a)&&e.isView)return new t(e.document,e.ptrs);var a;if(l(e)){if(l(e[0])){const n=e.map((e=>e.map((e=>({text:e,normal:e,pre:"",post:" ",tags:new Set})))));return new t(n)}const n=e.map((e=>e.terms.map((e=>(l(e.tags)&&(e.tags=new Set(e.tags)),e)))));return new t(n)}return o},c=Object.assign({},e),h=function(e,t){t&&h.addWords(t);const n=u(e,View,c);return e&&n.compute(c.hooks),n};Object.defineProperty(h,"_world",{value:c,writable:!0}),h.tokenize=function(e,t){const{compute:n}=this._world;t&&h.addWords(t);const r=u(e,View,c);return n.contractions&&r.compute(["alias","normal","machine","contractions"]),r},h.plugin=function(e){return s(e,this._world,View,this),this},h.extend=h.plugin,h.world=function(){return this._world},h.model=function(){return this._world.model},h.methods=function(){return this._world.methods},h.hooks=function(){return this._world.hooks},h.verbose=function(e){const t="undefined"!=typeof process&&process.env?process.env:self.env||{};return t.DEBUG_TAGS="tagger"===e||!0===e||"",t.DEBUG_MATCH="match"===e||!0===e||"",t.DEBUG_CHUNKS="chunker"===e||!0===e||"",this},h.version="14.15.0";var d={one:{cacheDoc:function(e){const t=e.map((e=>{const t=new Set;return e.forEach((e=>{""!==e.normal&&t.add(e.normal),e.switch&&t.add(`%${e.switch}%`),e.implicit&&t.add(e.implicit),e.machine&&t.add(e.machine),e.root&&t.add(e.root),e.alias&&e.alias.forEach((e=>t.add(e)));const n=Array.from(e.tags);for(let e=0;e<n.length;e+=1)t.add("#"+n[e])})),t}));return t}}};const m={cache:function(){return this._cache=this.methods.one.cacheDoc(this.document),this},uncache:function(){return this._cache=null,this}};var p={api:function(e){Object.assign(e.prototype,m)},compute:{cache:function(e){e._cache=e.methods.one.cacheDoc(e.document)}},methods:d};const f=e=>/^\p{Lu}[\p{Ll}'’]/u.test(e)||/^\p{Lu}$/u.test(e),b=(e,t,n)=>{if(n.forEach((e=>e.dirty=!0)),e){const r=[t,0].concat(n);Array.prototype.splice.apply(e,r)}return e},v=function(e){const t=e[e.length-1];!t||/ $/.test(t.post)||/[-–—]/.test(t.post)||(t.post+=" ")},y=(e,t,n)=>{const r=/[-.?!,;:)–—'"]/g,o=e[t-1];if(!o)return;const a=o.post;if(r.test(a)){const e=a.match(r).join(""),t=n[n.length-1];t.post=e+t.post,o.post=o.post.replace(r,"")}},w=function(e,t,n,r){const[o,a,i]=t;0===a||i===r[o].length?v(n):(v(n),v([e[t[1]]])),function(e,t,n){const r=e[t];if(0!==t||!f(r.text))return;n[0].text=n[0].text.replace(/^\p{Ll}/u,(e=>e.toUpperCase()));const o=e[t];o.tags.has("ProperNoun")||o.tags.has("Acronym")||f(o.text)&&o.text.length>1&&(o.text=(a=o.text,a.replace(/^\p{Lu}/u,(e=>e.toLowerCase()))));var a}(e,a,n),b(e,a,n)};let k=0;const P=e=>(e=e.length<3?"0"+e:e).length<3?"0"+e:e,A=function(e){let[t,n]=e.index||[0,0];k+=1,k=k>46655?0:k,t=t>46655?0:t,n=n>1294?0:n;let r=P(k.toString(36));r+=P(t.toString(36));let o=n.toString(36);o=o.length<2?"0"+o:o,r+=o;return r+=parseInt(36*Math.random(),10).toString(36),e.normal+"|"+r.toUpperCase()},C=function(e){if(e.has("@hasContraction")&&"function"==typeof e.contractions){e.grow("@hasContraction").contractions().expand()}},N=e=>"[object Array]"===Object.prototype.toString.call(e),j=function(e,t,n){const{document:r,world:o}=t;t.uncache();const a=t.fullPointer,i=t.fullPointer;t.forEach(((s,l)=>{const u=s.fullPointer[0],[c]=u,h=r[c];let d=function(e,t){const{methods:n}=t;return"string"==typeof e?n.one.tokenize.fromString(e,t)[0]:"object"==typeof e&&e.isView?e.clone().docs[0]||[]:N(e)?N(e[0])?e[0]:e:[]}(e,o);0!==d.length&&(d=function(e){return e.map((e=>(e.id=A(e),e)))}(d),n?(C(t.update([u]).firstTerm()),w(h,u,d,r)):(C(t.update([u]).lastTerm()),function(e,t,n,r){const[o,,a]=t,i=(r[o]||[]).length;a<i?(y(e,a,n),v(n)):i===a&&(v(e),y(e,a,n),r[o+1]&&(n[n.length-1].post+=" ")),b(e,t[2],n),t[4]=n[n.length-1].id}(h,u,d,r)),r[c]&&r[c][u[1]]&&(u[3]=r[c][u[1]].id),i[l]=u,u[2]+=d.length,a[l]=u)}));const s=t.toView(a);return t.ptrs=i,s.compute(["id","index","freeze","lexicon"]),s.world.compute.preTagger&&s.compute("preTagger"),s.compute("unfreeze"),s},x={insertAfter:function(e){return j(e,this,!1)},insertBefore:function(e){return j(e,this,!0)}};x.append=x.insertAfter,x.prepend=x.insertBefore,x.insert=x.insertAfter;const I=/\$[0-9a-z]+/g,T={},D=e=>e.replace(/^\p{Ll}/u,(e=>e.toUpperCase())),H=e=>e.replace(/^\p{Lu}/u,(e=>e.toLowerCase()));T.replaceWith=function(e,t={}){let n=this.fullPointer;const r=this;if(this.uncache(),"function"==typeof e)return function(e,t,n){return e.forEach((e=>{const r=t(e);e.replaceWith(r,n)})),e}(r,e,t);const o=r.docs[0];if(!o)return r;const a=t.possessives&&o[o.length-1].tags.has("Possessive"),i=t.case&&(s=o[0].text,/^\p{Lu}[\p{Ll}'’]/u.test(s)||/^\p{Lu}$/u.test(s));var s;e=function(e,t){if("string"!=typeof e)return e;const n=t.groups();return e=e.replace(I,(e=>{const t=e.replace(/\$/,"");return n.hasOwnProperty(t)?n[t].text():e})),e}(e,r);const l=this.update(n);n=n.map((e=>e.slice(0,3)));const u=(l.docs[0]||[]).map((e=>Array.from(e.tags))),c=l.docs[0][0].pre,h=l.docs[0][l.docs[0].length-1].post;if("string"==typeof e&&(e=this.fromText(e).compute("id")),r.insertAfter(e),l.has("@hasContraction")&&r.contractions){r.grow("@hasContraction+").contractions().expand()}if(r.delete(l),a){const e=r.docs[0],t=e[e.length-1];t.tags.has("Possessive")||(t.text+="'s",t.normal+="'s",t.tags.add("Possessive"))}if(c&&r.docs[0]&&(r.docs[0][0].pre=c),h&&r.docs[0]){const e=r.docs[0][r.docs[0].length-1];e.post.trim()||(e.post=h)}const d=r.toView(n).compute(["index","freeze","lexicon"]);if(d.world.compute.preTagger&&d.compute("preTagger"),d.compute("unfreeze"),t.tags&&d.terms().forEach(((e,t)=>{e.tagSafe(u[t])})),!d.docs[0]||!d.docs[0][0])return d;if(t.case){const e=i?D:H;d.docs[0][0].text=e(d.docs[0][0].text)}return d},T.replace=function(e,t,n){if(e&&!t)return this.replaceWith(e,n);const r=this.match(e);return r.found?(this.soften(),r.replaceWith(t,n)):this};const E={remove:function(e){const{indexN:t}=this.methods.one.pointer;this.uncache();let n=this.all(),r=this;e&&(n=this,r=this.match(e));const o=!n.ptrs;if(r.has("@hasContraction")&&r.contractions){r.grow("@hasContraction").contractions().expand()}let a=n.fullPointer;const i=r.fullPointer.reverse(),s=function(e,t){t.forEach((t=>{const[n,r,o]=t,a=o-r;e[n]&&(o===e[n].length&&o>1&&function(e,t){const n=e.length-1,r=e[n],o=e[n-t];o&&r&&(o.post+=r.post,o.post=o.post.replace(/ +([.?!,;:])/,"$1"),o.post=o.post.replace(/[,;:]+([.?!])/,"$1"))}(e[n],a),e[n].splice(r,a))}));for(let t=e.length-1;t>=0;t-=1)if(0===e[t].length&&(e.splice(t,1),t===e.length&&e[t-1])){const n=e[t-1],r=n[n.length-1];r&&(r.post=r.post.trimEnd())}return e}(this.document,i);if(a=function(e,t){return e=e.map((e=>{const[n]=e;return t[n]?(t[n].forEach((t=>{const n=t[2]-t[1];e[1]<=t[1]&&e[2]>=t[2]&&(e[2]-=n)})),e):e})),e.forEach(((t,n)=>{if(0===t[1]&&0==t[2])for(let t=n+1;t<e.length;t+=1)e[t][0]-=1,e[t][0]<0&&(e[t][0]=0)})),e=(e=e.filter((e=>e[2]-e[1]>0))).map((e=>(e[3]=null,e[4]=null,e)))}(a,t(i)),n.ptrs=a,n.document=s,n.compute("index"),o&&(n.ptrs=void 0),!e)return this.ptrs=[],n.none();return n.toView(a)}};E.delete=E.remove;const G={pre:function(e,t){return void 0===e&&this.found?this.docs[0][0].pre:(this.docs.forEach((n=>{const r=n[0];!0===t?r.pre+=e:r.pre=e})),this)},post:function(e,t){if(void 0===e){const e=this.docs[this.docs.length-1];return e[e.length-1].post}return this.docs.forEach((n=>{const r=n[n.length-1];!0===t?r.post+=e:r.post=e})),this},trim:function(){if(!this.found)return this;const e=this.docs,t=e[0][0];t.pre=t.pre.trimStart();const n=e[e.length-1],r=n[n.length-1];return r.post=r.post.trimEnd(),this},hyphenate:function(){return this.docs.forEach((e=>{e.forEach(((t,n)=>{0!==n&&(t.pre=""),e[n+1]&&(t.post="-")}))})),this},dehyphenate:function(){const e=/[-–—]/;return this.docs.forEach((t=>{t.forEach((t=>{e.test(t.post)&&(t.post=" ")}))})),this},toQuotations:function(e,t){return e=e||'"',t=t||'"',this.docs.forEach((n=>{n[0].pre=e+n[0].pre;const r=n[n.length-1];r.post=t+r.post})),this},toParentheses:function(e,t){return e=e||"(",t=t||")",this.docs.forEach((n=>{n[0].pre=e+n[0].pre;const r=n[n.length-1];r.post=t+r.post})),this}};G.deHyphenate=G.dehyphenate,G.toQuotation=G.toQuotations;var O={alpha:(e,t)=>e.normal<t.normal?-1:e.normal>t.normal?1:0,length:(e,t)=>{const n=e.normal.trim().length,r=t.normal.trim().length;return n<r?1:n>r?-1:0},wordCount:(e,t)=>e.words<t.words?1:e.words>t.words?-1:0,sequential:(e,t)=>e[0]<t[0]?1:e[0]>t[0]?-1:e[1]>t[1]?1:-1,byFreq:function(e){const t={};return e.forEach((e=>{t[e.normal]=t[e.normal]||0,t[e.normal]+=1})),e.sort(((e,n)=>{const r=t[e.normal],o=t[n.normal];return r<o?1:r>o?-1:0})),e}};const F=new Set(["index","sequence","seq","sequential","chron","chronological"]),V=new Set(["freq","frequency","topk","repeats"]),z=new Set(["alpha","alphabetical"]);var B={unique:function(){const e=new Set,t=this.filter((t=>{const n=t.text("machine");return!e.has(n)&&(e.add(n),!0)}));return t},reverse:function(){let e=this.pointer||this.docs.map(((e,t)=>[t]));return e=[].concat(e),e=e.reverse(),this._cache&&(this._cache=this._cache.reverse()),this.update(e)},sort:function(e){const{docs:t,pointer:n}=this;if(this.uncache(),"function"==typeof e)return function(e,t){let n=e.fullPointer;return n=n.sort(((n,r)=>(n=e.update([n]),r=e.update([r]),t(n,r)))),e.ptrs=n,e}(this,e);e=e||"alpha";const r=n||t.map(((e,t)=>[t]));let o=t.map(((e,t)=>({index:t,words:e.length,normal:e.map((e=>e.machine||e.normal||"")).join(" "),pointer:r[t]})));return F.has(e)&&(e="sequential"),z.has(e)&&(e="alpha"),V.has(e)?(o=O.byFreq(o),this.update(o.map((e=>e.pointer)))):"function"==typeof O[e]?(o=o.sort(O[e]),this.update(o.map((e=>e.pointer)))):this}};const S=function(e,t){if(e.length>0){const t=e[e.length-1],n=t[t.length-1];!1===/ /.test(n.post)&&(n.post+=" ")}return e=e.concat(t)};var $={concat:function(e){if("string"==typeof e){const t=this.fromText(e);if(this.found&&this.ptrs){const e=this.fullPointer,n=e[e.length-1][0];this.document.splice(n,0,...t.document)}else this.document=this.document.concat(t.document);return this.all().compute("index")}if("object"==typeof e&&e.isView)return function(e,t){if(e.document===t.document){const n=e.fullPointer.concat(t.fullPointer);return e.toView(n).compute("index")}return t.fullPointer.forEach((t=>{t[0]+=e.document.length})),e.document=S(e.document,t.docs),e.all()}(this,e);if(t=e,"[object Array]"===Object.prototype.toString.call(t)){const t=S(this.document,e);return this.document=t,this.all()}var t;return this}};var M={harden:function(){return this.ptrs=this.fullPointer,this},soften:function(){let e=this.ptrs;return!e||e.length<1||(e=e.map((e=>e.slice(0,3))),this.ptrs=e),this}};const L=Object.assign({},{toLowerCase:function(){return this.termList().forEach((e=>{e.text=e.text.toLowerCase()})),this},toUpperCase:function(){return this.termList().forEach((e=>{e.text=e.text.toUpperCase()})),this},toTitleCase:function(){return this.termList().forEach((e=>{e.text=e.text.replace(/^ *[a-z\u00C0-\u00FF]/,(e=>e.toUpperCase()))})),this},toCamelCase:function(){return this.docs.forEach((e=>{e.forEach(((t,n)=>{0!==n&&(t.text=t.text.replace(/^ *[a-z\u00C0-\u00FF]/,(e=>e.toUpperCase()))),n!==e.length-1&&(t.post="")}))})),this}},x,T,E,G,B,$,M),K={id:function(e){const t=e.docs;for(let e=0;e<t.length;e+=1)for(let n=0;n<t[e].length;n+=1){const r=t[e][n];r.id=r.id||A(r)}}};var J={api:function(e){Object.assign(e.prototype,L)},compute:K};const W=!0;var q={one:{contractions:[{word:"@",out:["at"]},{word:"arent",out:["are","not"]},{word:"alot",out:["a","lot"]},{word:"brb",out:["be","right","back"]},{word:"cannot",out:["can","not"]},{word:"dun",out:["do","not"]},{word:"can't",out:["can","not"]},{word:"shan't",out:["should","not"]},{word:"won't",out:["will","not"]},{word:"that's",out:["that","is"]},{word:"what's",out:["what","is"]},{word:"let's",out:["let","us"]},{word:"dunno",out:["do","not","know"]},{word:"gonna",out:["going","to"]},{word:"gotta",out:["have","got","to"]},{word:"gimme",out:["give","me"]},{word:"outta",out:["out","of"]},{word:"tryna",out:["trying","to"]},{word:"gtg",out:["got","to","go"]},{word:"im",out:["i","am"]},{word:"imma",out:["I","will"]},{word:"imo",out:["in","my","opinion"]},{word:"irl",out:["in","real","life"]},{word:"ive",out:["i","have"]},{word:"rn",out:["right","now"]},{word:"tbh",out:["to","be","honest"]},{word:"wanna",out:["want","to"]},{word:"c'mere",out:["come","here"]},{word:"c'mon",out:["come","on"]},{word:"shoulda",out:["should","have"]},{word:"coulda",out:["coulda","have"]},{word:"woulda",out:["woulda","have"]},{word:"musta",out:["must","have"]},{word:"tis",out:["it","is"]},{word:"twas",out:["it","was"]},{word:"y'know",out:["you","know"]},{word:"ne'er",out:["never"]},{word:"o'er",out:["over"]},{after:"ll",out:["will"]},{after:"ve",out:["have"]},{after:"re",out:["are"]},{after:"m",out:["am"]},{before:"c",out:["ce"]},{before:"m",out:["me"]},{before:"n",out:["ne"]},{before:"qu",out:["que"]},{before:"s",out:["se"]},{before:"t",out:["tu"]},{word:"shouldnt",out:["should","not"]},{word:"couldnt",out:["could","not"]},{word:"wouldnt",out:["would","not"]},{word:"hasnt",out:["has","not"]},{word:"wasnt",out:["was","not"]},{word:"isnt",out:["is","not"]},{word:"cant",out:["can","not"]},{word:"dont",out:["do","not"]},{word:"wont",out:["will","not"]},{word:"howd",out:["how","did"]},{word:"whatd",out:["what","did"]},{word:"whend",out:["when","did"]},{word:"whered",out:["where","did"]}],numberSuffixes:{st:W,nd:W,rd:W,th:W,am:W,pm:W,max:W,"°":W,s:W,e:W,er:W,"ère":W,"ème":W}}};const U=function(e,t,n){const[r,o]=t;n&&0!==n.length&&(n=n.map(((e,t)=>(e.implicit=e.text,e.machine=e.text,e.pre="",e.post="",e.text="",e.normal="",e.index=[r,o+t],e))),n[0]&&(n[0].pre=e[r][o].pre,n[n.length-1].post=e[r][o].post,n[0].text=e[r][o].text,n[0].normal=e[r][o].normal),e[r].splice(o,1,...n))},R=/'/,Q=new Set(["what","how","when","where","why"]),Z=new Set(["be","go","start","think","need"]),_=new Set(["been","gone"]),X=/'/,Y=/(e|é|aison|sion|tion)$/,ee=/(age|isme|acle|ege|oire)$/;var te=(e,t)=>["je",e[t].normal.split(X)[1]],ne=(e,t)=>{const n=e[t].normal.split(X)[1];return n&&n.endsWith("e")?["la",n]:["le",n]},re=(e,t)=>{const n=e[t].normal.split(X)[1];return n&&Y.test(n)&&!ee.test(n)?["du",n]:n&&n.endsWith("s")?["des",n]:["de",n]};const oe=/^([0-9.]{1,4}[a-z]{0,2}) ?[-–—] ?([0-9]{1,4}[a-z]{0,2})$/i,ae=/^([0-9]{1,2}(:[0-9][0-9])?(am|pm)?) ?[-–—] ?([0-9]{1,2}(:[0-9][0-9])?(am|pm)?)$/i,ie=/^[0-9]{3}-[0-9]{4}$/,se=function(e,t){const n=e[t];let r=n.text.match(oe);return null!==r?!0===n.tags.has("PhoneNumber")||ie.test(n.text)?null:[r[1],"to",r[2]]:(r=n.text.match(ae),null!==r?[r[1],"to",r[4]]:null)},le=/^([+-]?[0-9][.,0-9]*)([a-z°²³µ/]+)$/,ue=function(e,t,n){const r=n.model.one.numberSuffixes||{},o=e[t].text.match(le);if(null!==o){const e=o[2].toLowerCase().trim();return r.hasOwnProperty(e)?null:[o[1],e]}return null},ce=/'/,he=/^[0-9][^-–—]*[-–—].*?[0-9]/,de=function(e,t,n,r){const o=t.update();o.document=[e];let a=n+r;n>0&&(n-=1),e[a]&&(a+=1),o.ptrs=[[0,n,a]]},ge={t:(e,t)=>function(e,t){return"ain't"===e[t].normal||"aint"===e[t].normal?null:[e[t].normal.replace(/n't/,""),"not"]}(e,t),d:(e,t)=>function(e,t){const n=e[t].normal.split(R)[0];if(Q.has(n))return[n,"did"];if(e[t+1]){if(_.has(e[t+1].normal))return[n,"had"];if(Z.has(e[t+1].normal))return[n,"would"]}return null}(e,t)},me={j:(e,t)=>te(e,t),l:(e,t)=>ne(e,t),d:(e,t)=>re(e,t)},pe=function(e,t,n,r){for(let o=0;o<e.length;o+=1){const a=e[o];if(a.word===t.normal)return a.out;if(null!==r&&r===a.after)return[n].concat(a.out);if(null!==n&&n===a.before&&r&&r.length>2)return a.out.concat(r)}return null},fe=function(e,t){const n=t.fromText(e.join(" "));return n.compute(["id","alias"]),n.docs[0]},be=function(e,t){for(let n=t+1;n<5&&e[n];n+=1)if("been"===e[n].normal)return["there","has"];return["there","is"]};var ve={contractions:e=>{const{world:t,document:n}=e,{model:r,methods:o}=t,a=r.one.contractions||[];n.forEach(((r,i)=>{for(let s=r.length-1;s>=0;s-=1){let l=null,u=null;if(!0===ce.test(r[s].normal)){const e=r[s].normal.split(ce);l=e[0],u=e[1]}let c=pe(a,r[s],l,u);!c&&ge.hasOwnProperty(u)&&(c=ge[u](r,s,t)),!c&&me.hasOwnProperty(l)&&(c=me[l](r,s)),"there"===l&&"s"===u&&(c=be(r,s)),c?(c=fe(c,e),U(n,[i,s],c),de(n[i],e,s,c.length)):he.test(r[s].normal)?(c=se(r,s),c&&(c=fe(c,e),U(n,[i,s],c),o.one.setTag(c,"NumberRange",t),c[2]&&c[2].tags.has("Time")&&o.one.setTag([c[0]],"Time",t,null,"time-range"),de(n[i],e,s,c.length))):(c=ue(r,s,t),c&&(c=fe(c,e),U(n,[i,s],c),o.one.setTag([c[1]],"Unit",t,null,"contraction-unit")))}}))}};const ye={model:q,compute:ve,hooks:["contractions"]},we=function(e){const t=e.world,{model:n,methods:r}=e.world,o=r.one.setTag,{frozenLex:a}=n.one,i=n.one._multiCache||{};e.docs.forEach((e=>{for(let n=0;n<e.length;n+=1){const r=e[n],s=r.machine||r.normal;if(void 0!==i[s]&&e[n+1]){for(let r=n+i[s]-1;r>n;r-=1){const i=e.slice(n,r+1),s=i.map((e=>e.machine||e.normal)).join(" ");!0!==a.hasOwnProperty(s)||(o(i,a[s],t,!1,"1-frozen-multi-lexicon"),i.forEach((e=>e.frozen=!0)))}}void 0!==a[s]&&a.hasOwnProperty(s)&&(o([r],a[s],t,!1,"1-freeze-lexicon"),r.frozen=!0)}}))};const ke=e=>"[34m"+e+"[0m",Pe=e=>"[3m[2m"+e+"[0m",Ae=function(e){e.docs.forEach((e=>{console.log(ke("\n ┌─────────")),e.forEach((e=>{let t=` ${Pe("│")} `;const n=e.implicit||e.text||"-";!0===e.frozen?t+=`${ke(n)} ❄️`:t+=Pe(n),console.log(t)}))}))};var Ce={compute:{frozen:we,freeze:we,unfreeze:function(e){return e.docs.forEach((e=>{e.forEach((e=>{delete e.frozen}))})),e}},mutate:e=>{const t=e.methods.one;t.termMethods.isFrozen=e=>!0===e.frozen,t.debug.freeze=Ae,t.debug.frozen=Ae},api:function(e){e.prototype.freeze=function(){return this.docs.forEach((e=>{e.forEach((e=>{e.frozen=!0}))})),this},e.prototype.unfreeze=function(){this.compute("unfreeze")},e.prototype.isFrozen=function(){return this.match("@isFrozen+")}},hooks:["freeze"]};const Ne=function(e,t,n){const{model:r,methods:o}=n,a=o.one.setTag,i=r.one._multiCache||{},{lexicon:s}=r.one||{},l=e[t],u=l.machine||l.normal;if(void 0!==i[u]&&e[t+1]){for(let r=t+i[u]-1;r>t;r-=1){const o=e.slice(t,r+1);if(o.length<=1)return!1;const i=o.map((e=>e.machine||e.normal)).join(" ");if(!0===s.hasOwnProperty(i)){const e=s[i];return a(o,e,n,!1,"1-multi-lexicon"),!e||2!==e.length||"PhrasalVerb"!==e[0]&&"PhrasalVerb"!==e[1]||a([o[1]],"Particle",n,!1,"1-phrasal-particle"),!0}}return!1}return null},je=/^(under|over|mis|re|un|dis|semi|pre|post)-?/,xe=new Set(["Verb","Infinitive","PastTense","Gerund","PresentTense","Adjective","Participle"]),Ie=function(e,t,n){const{model:r,methods:o}=n,a=o.one.setTag,{lexicon:i}=r.one,s=e[t],l=s.machine||s.normal;if(void 0!==i[l]&&i.hasOwnProperty(l))return a([s],i[l],n,!1,"1-lexicon"),!0;if(s.alias){const e=s.alias.find((e=>i.hasOwnProperty(e)));if(e)return a([s],i[e],n,!1,"1-lexicon-alias"),!0}if(!0===je.test(l)){const e=l.replace(je,"");if(i.hasOwnProperty(e)&&e.length>3&&xe.has(i[e]))return a([s],i[e],n,!1,"1-lexicon-prefix"),!0}return null};var Te={lexicon:function(e){const t=e.world;e.docs.forEach((e=>{for(let n=0;n<e.length;n+=1)if(0===e[n].tags.size){let r=null;r=r||Ne(e,n,t),r=r||Ie(e,n,t)}}))}};var De={one:{expandLexicon:function(e){const t={},n={};return Object.keys(e).forEach((r=>{const o=e[r],a=(r=(r=r.toLowerCase().trim()).replace(/'s\b/,"")).split(/ /);a.length>1&&(void 0===n[a[0]]||a.length>n[a[0]])&&(n[a[0]]=a.length),t[r]=t[r]||o})),delete t[""],delete t.null,delete t[" "],{lex:t,_multi:n}}}};var He={addWords:function(e,t=!1){const n=this.world(),{methods:r,model:o}=n;if(!e)return;if(Object.keys(e).forEach((t=>{"string"==typeof e[t]&&e[t].startsWith("#")&&(e[t]=e[t].replace(/^#/,""))})),!0===t){const{lex:t,_multi:a}=r.one.expandLexicon(e,n);return Object.assign(o.one._multiCache,a),void Object.assign(o.one.frozenLex,t)}if(r.two.expandLexicon){const{lex:t,_multi:a}=r.two.expandLexicon(e,n);Object.assign(o.one.lexicon,t),Object.assign(o.one._multiCache,a)}const{lex:a,_multi:i}=r.one.expandLexicon(e,n);Object.assign(o.one.lexicon,a),Object.assign(o.one._multiCache,i)}};var Ee={model:{one:{lexicon:{},_multiCache:{},frozenLex:{}}},methods:De,compute:Te,lib:He,hooks:["lexicon"]};const Ge=function(e,t){const n=[{}],r=[null],o=[0],a=[];let i=0;e.forEach((function(e){let o=0;const a=function(e,t){const{methods:n,model:r}=t,o=n.one.tokenize.splitTerms(e,r).map((e=>n.one.tokenize.splitWhitespace(e,r)));return o.map((e=>e.text.toLowerCase()))}(e,t);for(let e=0;e<a.length;e++){const t=a[e];n[o]&&n[o].hasOwnProperty(t)?o=n[o][t]:(i++,n[o][t]=i,n[i]={},o=i,r[i]=null)}r[o]=[a.length]}));for(const e in n[0])i=n[0][e],o[i]=0,a.push(i);for(;a.length;){const e=a.shift(),t=Object.keys(n[e]);for(let s=0;s<t.length;s+=1){const l=t[s],u=n[e][l];for(a.push(u),i=o[e];i>0&&!n[i].hasOwnProperty(l);)i=o[i];if(n.hasOwnProperty(i)){const e=n[i][l];o[u]=e,r[e]&&(r[u]=r[u]||[],r[u]=r[u].concat(r[e]))}else o[u]=0}}return{goNext:n,endAs:r,failTo:o}},Oe=function(e,t,n){let r=0;const o=[];for(let a=0;a<e.length;a++){const i=e[a][n.form]||e[a].normal;for(;r>0&&(void 0===t.goNext[r]||!t.goNext[r].hasOwnProperty(i));)r=t.failTo[r]||0;if(t.goNext[r].hasOwnProperty(i)&&(r=t.goNext[r][i],t.endAs[r])){const n=t.endAs[r];for(let t=0;t<n.length;t++){const r=n[t],i=e[a-r+1],[s,l]=i.index;o.push([s,l,l+r,i.id])}}}return o},Fe=function(e,t){for(let n=0;n<e.length;n+=1)if(!0===t.has(e[n]))return!1;return!0};const Ve=(e,t)=>{for(let n=e.length-1;n>=0;n-=1)if(e[n]!==t)return e=e.slice(0,n+1);return e},ze={buildTrie:function(e){return function(e){return e.goNext=e.goNext.map((e=>{if(0!==Object.keys(e).length)return e})),e.goNext=Ve(e.goNext,void 0),e.failTo=Ve(e.failTo,0),e.endAs=Ve(e.endAs,null),e}(Ge(e,this.world()))}};ze.compile=ze.buildTrie;var Be={api:function(e){e.prototype.lookup=function(e,t={}){if(!e)return this.none();"string"==typeof e&&(e=[e]);var n;let r=function(e,t,n){let r=[];n.form=n.form||"normal";const o=e.docs;if(!t.goNext||!t.goNext[0])return console.error("Compromise invalid lookup trie"),e.none();const a=Object.keys(t.goNext[0]);for(let i=0;i<o.length;i++){if(e._cache&&e._cache[i]&&!0===Fe(a,e._cache[i]))continue;const s=o[i],l=Oe(s,t,n);l.length>0&&(r=r.concat(l))}return e.update(r)}(this,(n=e,"[object Object]"===Object.prototype.toString.call(n)?e:Ge(e,this.world)),t);return r=r.settle(),r}},lib:ze};const Se=function(e,t){return t?(e.forEach((e=>{const n=e[0];t[n]&&(e[0]=t[n][0],e[1]+=t[n][1],e[2]+=t[n][1])})),e):e},$e=function(e,t){let{ptrs:n}=e;const{byGroup:r}=e;return n=Se(n,t),Object.keys(r).forEach((e=>{r[e]=Se(r[e],t)})),{ptrs:n,byGroup:r}},Me=function(e,t,n){const r=n.methods.one;return"number"==typeof e&&(e=String(e)),"string"==typeof e&&(e=r.killUnicode(e,n),e=r.parseMatch(e,t,n)),e},Le=e=>"[object Object]"===Object.prototype.toString.call(e),Ke=e=>e&&Le(e)&&!0===e.isView,Je=e=>e&&Le(e)&&!0===e.isNet;var We={matchOne:function(e,t,n){const r=this.methods.one;if(Ke(e))return this.intersection(e).eq(0);if(Je(e))return this.sweep(e,{tagger:!1,matchOne:!0}).view;const o={regs:e=Me(e,n,this.world),group:t,justOne:!0},a=r.match(this.docs,o,this._cache),{ptrs:i,byGroup:s}=$e(a,this.fullPointer),l=this.toView(i);return l._groups=s,l},match:function(e,t,n){const r=this.methods.one;if(Ke(e))return this.intersection(e);if(Je(e))return this.sweep(e,{tagger:!1}).view.settle();const o={regs:e=Me(e,n,this.world),group:t},a=r.match(this.docs,o,this._cache),{ptrs:i,byGroup:s}=$e(a,this.fullPointer),l=this.toView(i);return l._groups=s,l},has:function(e,t,n){const r=this.methods.one;if(Ke(e)){return this.intersection(e).fullPointer.length>0}if(Je(e))return this.sweep(e,{tagger:!1}).view.found;const o={regs:e=Me(e,n,this.world),group:t,justOne:!0};return r.match(this.docs,o,this._cache).ptrs.length>0},if:function(e,t,n){const r=this.methods.one;if(Ke(e))return this.filter((t=>t.intersection(e).found));if(Je(e)){const t=this.sweep(e,{tagger:!1}).view.settle();return this.if(t)}const o={regs:e=Me(e,n,this.world),group:t,justOne:!0};let a=this.fullPointer;const i=this._cache||[];a=a.filter(((e,t)=>{const n=this.update([e]);return r.match(n.docs,o,i[t]).ptrs.length>0}));const s=this.update(a);return this._cache&&(s._cache=a.map((e=>i[e[0]]))),s},ifNo:function(e,t,n){const{methods:r}=this,o=r.one;if(Ke(e))return this.filter((t=>!t.intersection(e).found));if(Je(e)){const t=this.sweep(e,{tagger:!1}).view.settle();return this.ifNo(t)}e=Me(e,n,this.world);const a=this._cache||[],i=this.filter(((n,r)=>{const i={regs:e,group:t,justOne:!0};return 0===o.match(n.docs,i,a[r]).ptrs.length}));return this._cache&&(i._cache=i.ptrs.map((e=>a[e[0]]))),i}};var qe={before:function(e,t,n){const{indexN:r}=this.methods.one.pointer,o=[],a=r(this.fullPointer);Object.keys(a).forEach((e=>{const t=a[e].sort(((e,t)=>e[1]>t[1]?1:-1))[0];t[1]>0&&o.push([t[0],0,t[1]])}));const i=this.toView(o);return e?i.match(e,t,n):i},after:function(e,t,n){const{indexN:r}=this.methods.one.pointer,o=[],a=r(this.fullPointer),i=this.document;Object.keys(a).forEach((e=>{const t=a[e].sort(((e,t)=>e[1]>t[1]?-1:1))[0],[n,,r]=t;r<i[n].length&&o.push([n,r,i[n].length])}));const s=this.toView(o);return e?s.match(e,t,n):s},growLeft:function(e,t,n){"string"==typeof e&&(e=this.world.methods.one.parseMatch(e,n,this.world)),e[e.length-1].end=!0;const r=this.fullPointer;return this.forEach(((n,o)=>{const a=n.before(e,t);if(a.found){const e=a.terms();r[o][1]-=e.length,r[o][3]=e.docs[0][0].id}})),this.update(r)},growRight:function(e,t,n){"string"==typeof e&&(e=this.world.methods.one.parseMatch(e,n,this.world)),e[0].start=!0;const r=this.fullPointer;return this.forEach(((n,o)=>{const a=n.after(e,t);if(a.found){const e=a.terms();r[o][2]+=e.length,r[o][4]=null}})),this.update(r)},grow:function(e,t,n){return this.growRight(e,t,n).growLeft(e,t,n)}};const Ue=function(e,t){return[e[0],e[1],t[2]]},Re=(e,t,n)=>{return"string"==typeof e||(r=e,"[object Array]"===Object.prototype.toString.call(r))?t.match(e,n):e||t.none();var r},Qe=function(e,t){const[n,r,o]=e;return t.document[n]&&t.document[n][r]&&(e[3]=e[3]||t.document[n][r].id,t.document[n][o-1]&&(e[4]=e[4]||t.document[n][o-1].id)),e},Ze={splitOn:function(e,t){const{splitAll:n}=this.methods.one.pointer,r=Re(e,this,t).fullPointer,o=n(this.fullPointer,r);let a=[];return o.forEach((e=>{a.push(e.passthrough),a.push(e.before),a.push(e.match),a.push(e.after)})),a=a.filter((e=>e)),a=a.map((e=>Qe(e,this))),this.update(a)},splitBefore:function(e,t){const{splitAll:n}=this.methods.one.pointer,r=Re(e,this,t).fullPointer,o=n(this.fullPointer,r);for(let e=0;e<o.length;e+=1)!o[e].after&&o[e+1]&&o[e+1].before&&o[e].match&&o[e].match[0]===o[e+1].before[0]&&(o[e].after=o[e+1].before,delete o[e+1].before);let a=[];return o.forEach((e=>{a.push(e.passthrough),a.push(e.before),e.match&&e.after?a.push(Ue(e.match,e.after)):a.push(e.match)})),a=a.filter((e=>e)),a=a.map((e=>Qe(e,this))),this.update(a)},splitAfter:function(e,t){const{splitAll:n}=this.methods.one.pointer,r=Re(e,this,t).fullPointer,o=n(this.fullPointer,r);let a=[];return o.forEach((e=>{a.push(e.passthrough),e.before&&e.match?a.push(Ue(e.before,e.match)):(a.push(e.before),a.push(e.match)),a.push(e.after)})),a=a.filter((e=>e)),a=a.map((e=>Qe(e,this))),this.update(a)}};Ze.split=Ze.splitAfter;const _e=function(e,t){return!(!e||!t)&&(e[0]===t[0]&&e[2]===t[1])},Xe=function(e,t,n){const r=e.world,o=r.methods.one.parseMatch;n=n||"^.";const a=o(t=t||".$",{},r),i=o(n,{},r);a[a.length-1].end=!0,i[0].start=!0;const s=e.fullPointer,l=[s[0]];for(let t=1;t<s.length;t+=1){const n=l[l.length-1],r=s[t],o=e.update([n]),u=e.update([r]);_e(n,r)&&o.has(a)&&u.has(i)?l[l.length-1]=[n[0],n[1],r[2],n[3],r[4]]:l.push(r)}return e.update(l)},Ye={joinIf:function(e,t){return Xe(this,e,t)},join:function(){return Xe(this)}},et=Object.assign({},We,qe,Ze,Ye);et.lookBehind=et.before,et.lookBefore=et.before,et.lookAhead=et.after,et.lookAfter=et.after,et.notIf=et.ifNo;const tt=/(?:^|\s)([![^]*(?:<[^<]*>)?\/.*?[^\\/]\/[?\]+*$~]*)(?:\s|$)/,nt=/([!~[^]*(?:<[^<]*>)?\([^)]+[^\\)]\)[?\]+*$~]*)(?:\s|$)/,rt=/ /g,ot=e=>/^[![^]*(<[^<]*>)?\//.test(e)&&/\/[?\]+*$~]*$/.test(e),at=function(e){return e=(e=e.map((e=>e.trim()))).filter((e=>e))},it=/\{([0-9]+)?(, *[0-9]*)?\}/,st=/&&/,lt=new RegExp(/^<\s*(\S+)\s*>/),ut=e=>e.charAt(0).toUpperCase()+e.substring(1),ct=e=>e.charAt(e.length-1),ht=e=>e.charAt(0),dt=e=>e.substring(1),gt=e=>e.substring(0,e.length-1),mt=function(e){return e=dt(e),e=gt(e)},pt=function(e,t){const n={};for(let r=0;r<2;r+=1){if("$"===ct(e)&&(n.end=!0,e=gt(e)),"^"===ht(e)&&(n.start=!0,e=dt(e)),"?"===ct(e)&&(n.optional=!0,e=gt(e)),("["===ht(e)||"]"===ct(e))&&(n.group=null,"["===ht(e)&&(n.groupStart=!0),"]"===ct(e)&&(n.groupEnd=!0),e=(e=e.replace(/^\[/,"")).replace(/\]$/,""),"<"===ht(e))){const t=lt.exec(e);t.length>=2&&(n.group=t[1],e=e.replace(t[0],""))}if("+"===ct(e)&&(n.greedy=!0,e=gt(e)),"*"!==e&&"*"===ct(e)&&"\\*"!==e&&(n.greedy=!0,e=gt(e)),"!"===ht(e)&&(n.negative=!0,e=dt(e)),"~"===ht(e)&&"~"===ct(e)&&e.length>2&&(e=mt(e),n.fuzzy=!0,n.min=t.fuzzy||.85,!1===/\(/.test(e)))return n.word=e,n;if("/"===ht(e)&&"/"===ct(e))return e=mt(e),t.caseSensitive&&(n.use="text"),n.regex=new RegExp(e),n;if(!0===it.test(e)&&(e=e.replace(it,((e,t,r)=>(void 0===r?(n.min=Number(t),n.max=Number(t)):(r=r.replace(/, */,""),void 0===t?(n.min=0,n.max=Number(r)):(n.min=Number(t),n.max=Number(r||999))),n.greedy=!0,n.min||(n.optional=!0),"")))),"("===ht(e)&&")"===ct(e)){st.test(e)?(n.choices=e.split(st),n.operator="and"):(n.choices=e.split("|"),n.operator="or"),n.choices[0]=dt(n.choices[0]);const r=n.choices.length-1;n.choices[r]=gt(n.choices[r]),n.choices=n.choices.map((e=>e.trim())),n.choices=n.choices.filter((e=>e)),n.choices=n.choices.map((e=>e.split(/ /g).map((e=>pt(e,t))))),e=""}if("{"===ht(e)&&"}"===ct(e)){if(e=mt(e),n.root=e,/\//.test(e)){const e=n.root.split(/\//);n.root=e[0],n.pos=e[1],"adj"===n.pos&&(n.pos="Adjective"),n.pos=n.pos.charAt(0).toUpperCase()+n.pos.substr(1).toLowerCase(),void 0!==e[2]&&(n.sense=e[2])}return n}if("<"===ht(e)&&">"===ct(e))return e=mt(e),n.chunk=ut(e),n.greedy=!0,n;if("%"===ht(e)&&"%"===ct(e))return e=mt(e),n.switch=e,n}return"#"===ht(e)?(n.tag=dt(e),n.tag=ut(n.tag),n):"@"===ht(e)?(n.method=dt(e),n):"."===e?(n.anything=!0,n):"*"===e?(n.anything=!0,n.greedy=!0,n.optional=!0,n):(e&&(e=(e=e.replace("\\*","*")).replace("\\.","."),t.caseSensitive?n.use="text":e=e.toLowerCase(),n.word=e),n)},ft=/[a-z0-9][-–—][a-z]/i,bt=function(e,t){const{all:n}=t.methods.two.transform.verb||{},r=e.root;return n?n(r,t.model):[]},vt=function(e,t){const{all:n}=t.methods.two.transform.noun||{};return n?n(e.root,t.model):[e.root]},yt=function(e,t){const{all:n}=t.methods.two.transform.adjective||{};return n?n(e.root,t.model):[e.root]},wt=function(e){return e=function(e){let t=0,n=null;for(let r=0;r<e.length;r++){const o=e[r];!0===o.groupStart&&(n=o.group,null===n&&(n=String(t),t+=1)),null!==n&&(o.group=n),!0===o.groupEnd&&(n=null)}return e}(e),e=function(e){return e.map((e=>(e.fuzzy&&e.choices&&e.choices.forEach((t=>{1===t.length&&t[0].word&&(t[0].fuzzy=!0,t[0].min=e.min)})),e)))}(e=e.map((e=>{if(void 0!==e.choices){if("or"!==e.operator)return e;if(!0===e.fuzzy)return e;!0===e.choices.every((e=>{if(1!==e.length)return!1;const t=e[0];return!0!==t.fuzzy&&!t.start&&!t.end&&void 0!==t.word&&!0!==t.negative&&!0!==t.optional&&!0!==t.method}))&&(e.fastOr=new Set,e.choices.forEach((t=>{e.fastOr.add(t[0].word)})),delete e.choices)}return e}))),e},kt=function(e,t){for(const n of t)if(e.has(n))return!0;return!1},Pt=function(e,t){for(let n=0;n<e.length;n+=1){const r=e[n];if(!0!==r.optional&&!0!==r.negative&&!0!==r.fuzzy){if(void 0!==r.word&&!1===t.has(r.word))return!0;if(void 0!==r.tag&&!1===t.has("#"+r.tag))return!0;if(r.fastOr&&!1===kt(r.fastOr,t))return!1}}return!1},At=function(e,t,n=3){if(e===t)return 1;if(e.length<n||t.length<n)return 0;const r=function(e,t){const n=e.length,r=t.length;if(0===n)return r;if(0===r)return n;const o=(r>n?r:n)+1;if(Math.abs(n-r)>(o||100))return o||100;const a=[];for(let e=0;e<o;e++)a[e]=[e],a[e].length=o;for(let e=0;e<o;e++)a[0][e]=e;let i,s,l,u,c,h;for(let o=1;o<=n;++o)for(s=e[o-1],i=1;i<=r;++i){if(o===i&&a[o][i]>4)return n;l=t[i-1],u=s===l?0:1,c=a[o-1][i]+1,(h=a[o][i-1]+1)<c&&(c=h),(h=a[o-1][i-1]+u)<c&&(c=h);const r=o>1&&i>1&&s===t[i-2]&&e[o-2]===l&&(h=a[o-2][i-2]+u)<c;a[o][i]=r?h:c}return a[n][r]}(e,t),o=Math.max(e.length,t.length);return 1-(0===o?0:r/o)},Ct=/([\u0022\uFF02\u0027\u201C\u2018\u201F\u201B\u201E\u2E42\u201A\u00AB\u2039\u2035\u2036\u2037\u301D\u0060\u301F])/,Nt=/([\u0022\uFF02\u0027\u201D\u2019\u00BB\u203A\u2032\u2033\u2034\u301E\u00B4])/,jt=/^[-–—]$/,xt=/ [-–—]{1,3} /,It=(e,t)=>-1!==e.post.indexOf(t),Tt={hasQuote:e=>Ct.test(e.pre)||Nt.test(e.post),hasComma:e=>It(e,","),hasPeriod:e=>!0===It(e,".")&&!1===It(e,"..."),hasExclamation:e=>It(e,"!"),hasQuestionMark:e=>It(e,"?")||It(e,"¿"),hasEllipses:e=>It(e,"..")||It(e,"…"),hasSemicolon:e=>It(e,";"),hasColon:e=>It(e,":"),hasSlash:e=>/\//.test(e.text),hasHyphen:e=>jt.test(e.post)||jt.test(e.pre),hasDash:e=>xt.test(e.post)||xt.test(e.pre),hasContraction:e=>Boolean(e.implicit),isAcronym:e=>e.tags.has("Acronym"),isKnown:e=>e.tags.size>0,isTitleCase:e=>/^\p{Lu}[a-z'\u00C0-\u00FF]/u.test(e.text),isUpperCase:e=>/^\p{Lu}+$/u.test(e.text)};Tt.hasQuotation=Tt.hasQuote;let Dt=function(){};Dt=function(e,t,n,r){const o=function(e,t,n,r){if(!0===t.anything)return!0;if(!0===t.start&&0!==n)return!1;if(!0===t.end&&n!==r-1)return!1;if(void 0!==t.id&&t.id===e.id)return!0;if(void 0!==t.word){if(t.use)return t.word===e[t.use];if(null!==e.machine&&e.machine===t.word)return!0;if(void 0!==e.alias&&e.alias.hasOwnProperty(t.word))return!0;if(!0===t.fuzzy){if(t.word===e.root)return!0;if(At(t.word,e.normal)>=t.min)return!0}return!(!e.alias||!e.alias.some((e=>e===t.word)))||t.word===e.text||t.word===e.normal}if(void 0!==t.tag)return!0===e.tags.has(t.tag);if(void 0!==t.method)return"function"==typeof Tt[t.method]&&!0===Tt[t.method](e);if(void 0!==t.pre)return e.pre&&e.pre.includes(t.pre);if(void 0!==t.post)return e.post&&e.post.includes(t.post);if(void 0!==t.regex){let n=e.normal;return t.use&&(n=e[t.use]),t.regex.test(n)}if(void 0!==t.chunk)return e.chunk===t.chunk;if(void 0!==t.switch)return e.switch===t.switch;if(void 0!==t.machine)return e.normal===t.machine||e.machine===t.machine||e.root===t.machine;if(void 0!==t.sense)return e.sense===t.sense;if(void 0!==t.fastOr){if(t.pos&&!e.tags.has(t.pos))return null;const n=e.root||e.implicit||e.machine||e.normal;return t.fastOr.has(n)||t.fastOr.has(e.text)}return void 0!==t.choices&&("and"===t.operator?t.choices.every((t=>Dt(e,t,n,r))):t.choices.some((t=>Dt(e,t,n,r))))}(e,t,n,r);return!0===t.negative?!o:o};const Ht=function(e,t){if(!0===e.end&&!0===e.greedy&&t.start_i+t.t<t.phrase_length-1){const n=Object.assign({},e,{end:!1});if(!0===Dt(t.terms[t.t],n,t.start_i+t.t,t.phrase_length))return!0}return!1},Et=function(e,t){return e.groups[e.inGroup]||(e.groups[e.inGroup]={start:t,length:0}),e.groups[e.inGroup]},Gt=function(e){const{regs:t}=e,n=t[e.r],r=function(e,t){let n=e.t;if(!t)return e.terms.length;for(;n<e.terms.length;n+=1)if(!0===Dt(e.terms[n],t,e.start_i+n,e.phrase_length))return n;return null}(e,t[e.r+1]);if(null===r||0===r)return null;if(void 0!==n.min&&r-e.t<n.min)return null;if(void 0!==n.max&&r-e.t>n.max)return e.t=e.t+n.max,!0;if(!0===e.hasGroup){Et(e,e.t).length=r-e.t}return e.t=r,!0},Ot=function(e,t=0){const n=e.regs[e.r];let r=!1;for(let a=0;a<n.choices.length;a+=1){const i=n.choices[a];if(o=i,"[object Array]"!==Object.prototype.toString.call(o))return!1;if(r=i.every(((n,r)=>{let o=0;const a=e.t+r+t+o;if(void 0===e.terms[a])return!1;const i=Dt(e.terms[a],n,a+e.start_i,e.phrase_length);if(!0===i&&!0===n.greedy)for(let t=1;t<e.terms.length;t+=1){const r=e.terms[a+t];if(r){if(!0!==Dt(r,n,e.start_i+t,e.phrase_length))break;o+=1}}return t+=o,i})),r){t+=i.length;break}}var o;return r&&!0===n.greedy?Ot(e,t):t},Ft=function(e){const{regs:t}=e,n=t[e.r],r=Ot(e);if(r){if(!0===n.negative)return null;if(!0===e.hasGroup){Et(e,e.t).length+=r}if(!0===n.end){const t=e.phrase_length;if(e.t+e.start_i+r!==t)return null}return e.t+=r,!0}return!!n.optional||null},Vt=function(e){const{regs:t}=e,n=t[e.r],r=function(e){let t=0;return!0===e.regs[e.r].choices.every((n=>{const r=n.every(((t,n)=>{const r=e.t+n;return void 0!==e.terms[r]&&Dt(e.terms[r],t,r,e.phrase_length)}));return!0===r&&n.length>t&&(t=n.length),r}))&&t}(e);if(r){if(!0===n.negative)return null;if(!0===e.hasGroup){Et(e,e.t).length+=r}if(!0===n.end){const t=e.phrase_length-1;if(e.t+e.start_i!==t)return null}return e.t+=r,!0}return!!n.optional||null},zt=function(e){const{regs:t}=e,n=t[e.r],r=Object.assign({},n);r.negative=!1;if(Dt(e.terms[e.t],r,e.start_i+e.t,e.phrase_length))return!1;if(n.optional){const n=t[e.r+1];if(n){if(Dt(e.terms[e.t],n,e.start_i+e.t,e.phrase_length))e.r+=1;else if(n.optional&&t[e.r+2]){Dt(e.terms[e.t],t[e.r+2],e.start_i+e.t,e.phrase_length)&&(e.r+=2)}}}return n.greedy?function(e,t,n){let r=0;for(let o=e.t;o<e.terms.length;o+=1){let a=Dt(e.terms[o],t,e.start_i+e.t,e.phrase_length);if(a)break;if(n&&(a=Dt(e.terms[o],n,e.start_i+e.t,e.phrase_length),a))break;if(r+=1,void 0!==t.max&&r===t.max)break}return!(0===r||t.min&&t.min>r||(e.t+=r,0))}(e,r,t[e.r+1]):(e.t+=1,!0)},Bt=function(e){const{regs:t,phrase_length:n}=e,r=t[e.r];return e.t=function(e,t){const n=Object.assign({},e.regs[e.r],{start:!1,end:!1}),r=e.t;for(;e.t<e.terms.length;e.t+=1){if(t&&Dt(e.terms[e.t],t,e.start_i+e.t,e.phrase_length))return e.t;const o=e.t-r+1;if(void 0!==n.max&&o===n.max)return e.t;if(!1===Dt(e.terms[e.t],n,e.start_i+e.t,e.phrase_length))return void 0!==n.min&&o<n.min?null:e.t}return e.t}(e,t[e.r+1]),null===e.t||r.min&&r.min>e.t?null:!0!==r.end||e.start_i+e.t===n||null},St=function(e){const{regs:t}=e,n=t[e.r],r=e.terms[e.t],o=e.t;if(n.optional&&t[e.r+1]&&n.negative)return!0;if(n.optional&&t[e.r+1]&&function(e){const{regs:t}=e,n=t[e.r],r=e.terms[e.t],o=Dt(r,t[e.r+1],e.start_i+e.t,e.phrase_length);if(n.negative||o){const n=e.terms[e.t+1];n&&Dt(n,t[e.r+1],e.start_i+e.t,e.phrase_length)||(e.r+=1)}}(e),r.implicit&&e.terms[e.t+1]&&function(e){const t=e.terms[e.t],n=e.regs[e.r];if(t.implicit&&e.terms[e.t+1]){if(!e.terms[e.t+1].implicit)return;n.word===t.normal&&(e.t+=1),"hasContraction"===n.method&&(e.t+=1)}}(e),e.t+=1,!0===n.end&&e.t!==e.terms.length&&!0!==n.greedy)return null;if(!0===n.greedy){if(!Bt(e))return null}return!0===e.hasGroup&&function(e,t){const n=e.regs[e.r],r=Et(e,t);e.t>1&&n.greedy?r.length+=e.t-t:r.length++}(e,o),!0},$t=function(e,t,n,r){if(0===e.length||0===t.length)return null;const o={t:0,terms:e,r:0,regs:t,groups:{},start_i:n,phrase_length:r,inGroup:null};for(;o.r<t.length;o.r+=1){const e=t[o.r];if(o.hasGroup=Boolean(e.group),!0===o.hasGroup?o.inGroup=e.group:o.inGroup=null,!o.terms[o.t]){if(!1===t.slice(o.r).some((e=>!e.optional)))break;return null}if(!0===e.anything&&!0===e.greedy){if(!Gt(o))return null;continue}if(void 0!==e.choices&&"or"===e.operator){if(!Ft(o))return null;continue}if(void 0!==e.choices&&"and"===e.operator){if(!Vt(o))return null;continue}if(!0===e.anything){if(e.negative&&e.anything)return null;if(!St(o))return null;continue}if(!0===Ht(e,o)){if(!St(o))return null;continue}if(e.negative){if(!zt(o))return null;continue}if(!0!==Dt(o.terms[o.t],e,o.start_i+o.t,o.phrase_length)){if(!0!==e.optional)return null}else{if(!St(o))return null}}const a=[null,n,o.t+n];if(a[1]===a[2])return null;const i={};return Object.keys(o.groups).forEach((e=>{const t=o.groups[e],r=n+t.start;i[e]=[null,r,r+t.length]})),{pointer:a,groups:i}},Mt=function(e,t){return e.pointer[0]=t,Object.keys(e.groups).forEach((n=>{e.groups[n][0]=t})),e},Lt=function(e,t,n){let r=$t(e,t,0,e.length);return r?(r=Mt(r,n),r):null},Kt={one:{termMethods:Tt,parseMatch:function(e,t,n){if(null==e||""===e)return[];t=t||{},"number"==typeof e&&(e=String(e));let r=function(e){const t=e.split(tt);let n=[];t.forEach((e=>{ot(e)?n.push(e):n=n.concat(e.split(nt))})),n=at(n);let r=[];return n.forEach((e=>{(e=>/^[![^]*(<[^<]*>)?\(/.test(e)&&/\)[?\]+*$~]*$/.test(e))(e)||ot(e)?r.push(e):r=r.concat(e.split(rt))})),r=at(r),r}(e);return r=r.map((e=>pt(e,t))),r=function(e,t){const n=t.model.one.prefixes;for(let t=e.length-1;t>=0;t-=1){const r=e[t];if(r.word&&ft.test(r.word)){let o=r.word.split(/[-–—]/g);if(n.hasOwnProperty(o[0]))continue;o=o.filter((e=>e)).reverse(),e.splice(t,1),o.forEach((n=>{const o=Object.assign({},r);o.word=n,e.splice(t,0,o)}))}}return e}(r,n),r=function(e,t){return e.map((e=>{if(e.root)if(t.methods.two&&t.methods.two.transform){let n=[];e.pos?"Verb"===e.pos?n=n.concat(bt(e,t)):"Noun"===e.pos?n=n.concat(vt(e,t)):"Adjective"===e.pos&&(n=n.concat(yt(e,t))):(n=n.concat(bt(e,t)),n=n.concat(vt(e,t)),n=n.concat(yt(e,t))),n=n.filter((e=>e)),n.length>0&&(e.operator="or",e.fastOr=new Set(n))}else e.machine=e.root,delete e.id,delete e.root;return e}))}(r,n),r=wt(r),r},match:function(e,t,n){n=n||[];const{regs:r,group:o,justOne:a}=t;let i=[];if(!r||0===r.length)return{ptrs:[],byGroup:{}};const s=r.filter((e=>!0!==e.optional&&!0!==e.negative)).length;e:for(let t=0;t<e.length;t+=1){const o=e[t];if(!n[t]||!Pt(r,n[t]))if(!0!==r[0].start)for(let e=0;e<o.length;e+=1){const n=o.slice(e);if(n.length<s)break;let l=$t(n,r,e,o.length);if(l){if(l=Mt(l,t),i.push(l),!0===a)break e;const n=l.pointer[2];Math.abs(n-1)>e&&(e=Math.abs(n-1))}}else{const e=Lt(o,r,t);e&&i.push(e)}}return!0===r[r.length-1].end&&(i=i.filter((t=>{const n=t.pointer[0];return e[n].length===t.pointer[2]}))),t.notIf&&(i=function(e,t,n){return e=e.filter((e=>{const[r,o,a]=e.pointer,i=n[r].slice(o,a);for(let e=0;e<i.length;e+=1){const n=i.slice(e);if(null!==$t(n,t,e,i.length))return!1}return!0})),e}(i,t.notIf,e)),i=function(e,t){const n=[],r={};return 0===e.length||("number"==typeof t&&(t=String(t)),t?e.forEach((e=>{e.groups[t]&&n.push(e.groups[t])})):e.forEach((e=>{n.push(e.pointer),Object.keys(e.groups).forEach((t=>{r[t]=r[t]||[],r[t].push(e.groups[t])}))}))),{ptrs:n,byGroup:r}}(i,o),i.ptrs.forEach((t=>{const[n,r,o]=t;t[3]=e[n][r].id,t[4]=e[n][o-1].id})),i}}};var Jt={api:function(e){Object.assign(e.prototype,et)},methods:Kt,lib:{parseMatch:function(e,t){const n=this.world(),r=n.methods.one.killUnicode;return r&&(e=r(e,n)),n.methods.one.parseMatch(e,t,n)}}};const Wt=/^\../,qt=/^#./,Ut=function(e,t){const n={},r={};return Object.keys(t).forEach((o=>{let a=t[o];const i=function(e){let t="",n="</span>";return e=e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'"),Wt.test(e)?t=`<span class="${e.replace(/^\./,"")}"`:qt.test(e)?t=`<span id="${e.replace(/^#/,"")}"`:(t=`<${e}`,n=`</${e}>`),t+=">",{start:t,end:n}}(o);"string"==typeof a&&(a=e.match(a)),a.docs.forEach((e=>{if(e.every((e=>e.implicit)))return;const t=e[0].id;n[t]=n[t]||[],n[t].push(i.start);const o=e[e.length-1].id;r[o]=r[o]||[],r[o].push(i.end)}))})),{starts:n,ends:r}};var Rt={html:function(e){const{starts:t,ends:n}=Ut(this,e);let r="";return this.docs.forEach((e=>{for(let o=0;o<e.length;o+=1){const a=e[o];t.hasOwnProperty(a.id)&&(r+=t[a.id].join("")),r+=a.pre||"",r+=a.text||"",n.hasOwnProperty(a.id)&&(r+=n[a.id].join("")),r+=a.post||""}})),r}};const Qt=/[,:;)\]*.?~!\u0022\uFF02\u201D\u2019\u00BB\u203A\u2032\u2033\u2034\u301E\u00B4—-]+$/,Zt=/^[(['"*~\uFF02\u201C\u2018\u201F\u201B\u201E\u2E42\u201A\u00AB\u2039\u2035\u2036\u2037\u301D\u0060\u301F]+/,_t=/[,:;)('"\u201D\]]/,Xt=/^[-–—]$/,Yt=/ /,en=function(e,t,n=!0){let r="";return e.forEach((e=>{let n=e.pre||"",o=e.post||"";"some"===t.punctuation&&(n=n.replace(Zt,""),Xt.test(o)&&(o=" "),o=o.replace(_t,""),o=o.replace(/\?!+/,"?"),o=o.replace(/!+/,"!"),o=o.replace(/\?+/,"?"),o=o.replace(/\.{2,}/,""),e.tags.has("Abbreviation")&&(o=o.replace(/\./,""))),"some"===t.whitespace&&(n=n.replace(/\s/,""),o=o.replace(/\s+/," ")),t.keepPunct||(n=n.replace(Zt,""),o="-"===o?" ":o.replace(Qt,""));let a=e[t.form||"text"]||e.normal||"";"implicit"===t.form&&(a=e.implicit||e.text),"root"===t.form&&e.implicit&&(a=e.root||e.implicit||e.normal),"machine"!==t.form&&"implicit"!==t.form&&"root"!==t.form||!e.implicit||o&&Yt.test(o)||(o+=" "),r+=n+a+o})),!1===n&&(r=r.trim()),!0===t.lowerCase&&(r=r.toLowerCase()),r},tn={text:{form:"text"},normal:{whitespace:"some",punctuation:"some",case:"some",unicode:"some",form:"normal"},machine:{keepSpace:!1,whitespace:"some",punctuation:"some",case:"none",unicode:"some",form:"machine"},root:{keepSpace:!1,whitespace:"some",punctuation:"some",case:"some",unicode:"some",form:"root"},implicit:{form:"implicit"}};tn.clean=tn.normal,tn.reduced=tn.root;const nn=[];let rn=0;for(;rn<64;)nn[rn]=0|4294967296*Math.sin(++rn%Math.PI);const on=function(e){let t,n,r,o=decodeURI(encodeURI(e))+"",a=o.length;const i=[t=1732584193,n=4023233417,~t,~n],s=[];for(e=--a/4+2|15,s[--e]=8*a;~a;)s[a>>2]|=o.charCodeAt(a)<<8*a--;for(rn=o=0;rn<e;rn+=16){for(a=i;o<64;a=[r=a[3],t+((r=a[0]+[t&n|~t&r,r&t|~r&n,t^n^r,n^(t|~r)][a=o>>4]+nn[o]+~~s[rn|15&[o,5*o+1,3*o+5,7*o][a]])<<(a=[7,12,17,22,5,9,14,20,4,11,16,23,6,10,15,21][4*a+o++%4])|r>>>-a),t,n])t=0|a[1],n=a[2];for(o=4;o;)i[--o]+=a[o]}for(e="";o<32;)e+=(i[o>>3]>>4*(1^o++)&15).toString(16);return e},an={text:!0,terms:!0},sn={case:"none",unicode:"some",form:"machine",punctuation:"some"},ln=function(e,t){return Object.assign({},e,t)},un={text:e=>en(e,{keepPunct:!0},!1),normal:e=>en(e,ln(tn.normal,{keepPunct:!0}),!1),implicit:e=>en(e,ln(tn.implicit,{keepPunct:!0}),!1),machine:e=>en(e,sn,!1),root:e=>en(e,ln(sn,{form:"root"}),!1),hash:e=>on(en(e,{keepPunct:!0},!1)),offset:e=>{const t=un.text(e).length;return{index:e[0].offset.index,start:e[0].offset.start,length:t}},terms:e=>e.map((e=>{const t=Object.assign({},e);return t.tags=Array.from(e.tags),t})),confidence:(e,t,n)=>t.eq(n).confidence(),syllables:(e,t,n)=>t.eq(n).syllables(),sentence:(e,t,n)=>t.eq(n).fullSentence().text(),dirty:e=>e.some((e=>!0===e.dirty))};un.sentences=un.sentence,un.clean=un.normal,un.reduced=un.root;const cn={json:function(e){const t=(n=this,"string"==typeof(r=(r=e)||{})&&(r={}),(r=Object.assign({},an,r)).offset&&n.compute("offset"),n.docs.map(((e,t)=>{const o={};return Object.keys(r).forEach((a=>{r[a]&&un[a]&&(o[a]=un[a](e,n,t))})),o})));var n,r;return"number"==typeof e?t[e]:t}};cn.data=cn.json;const hn=function(e){const t=e.pre||"",n=e.post||"";return t+e.text+n},dn=function(e,t){const n=function(e,t){const n={};return Object.keys(t).forEach((r=>{e.match(r).fullPointer.forEach((e=>{n[e[3]]={fn:t[r],end:e[2]}}))})),n}(e,t);let r="";return e.docs.forEach(((t,o)=>{for(let a=0;a<t.length;a+=1){const i=t[a];if(n.hasOwnProperty(i.id)){const{fn:s,end:l}=n[i.id],u=e.update([[o,a,l]]);r+=t[a].pre||"",r+=s(u),a=l-1,r+=t[a].post||""}else r+=hn(i)}})),r},gn={debug:function(e){const t=this.methods.one.debug||{};return e&&t.hasOwnProperty(e)?(t[e](this),this):"undefined"!=typeof window&&window.document?(t.clientSide(this),this):(t.tags(this),this)},out:function(e){if(t=e,"[object Object]"===Object.prototype.toString.call(t))return dn(this,e);var t;if("text"===e)return this.text();if("normal"===e)return this.text("normal");if("root"===e)return this.text("root");if("machine"===e||"reduced"===e)return this.text("machine");if("hash"===e||"md5"===e)return on(this.text());if("json"===e)return this.json();if("offset"===e||"offsets"===e)return this.compute("offset"),this.json({offset:!0});if("array"===e){const e=this.docs.map((e=>e.reduce(((e,t)=>e+t.pre+t.text+t.post),"").trim()));return e.filter((e=>e))}if("freq"===e||"frequency"===e||"topk"===e)return function(e){const t={};e.forEach((e=>{t[e]=t[e]||0,t[e]+=1}));const n=Object.keys(t).map((e=>({normal:e,count:t[e]})));return n.sort(((e,t)=>e.count>t.count?-1:0))}(this.json({normal:!0}).map((e=>e.normal)));if("terms"===e){let e=[];return this.docs.forEach((t=>{let n=t.map((e=>e.text));n=n.filter((e=>e)),e=e.concat(n)})),e}return"tags"===e?this.docs.map((e=>e.reduce(((e,t)=>(e[t.implicit||t.normal]=Array.from(t.tags),e)),{}))):"debug"===e?this.debug():this.text()},wrap:function(e){return dn(this,e)}};var mn={text:function(e){let t={};var n;if(e&&"string"==typeof e&&tn.hasOwnProperty(e)?t=Object.assign({},tn[e]):e&&(n=e,"[object Object]"===Object.prototype.toString.call(n))&&(t=Object.assign({},e)),void 0!==t.keepSpace||this.isFull()||(t.keepSpace=!1),void 0===t.keepEndPunct&&this.pointer){const e=this.pointer[0];e&&e[1]?t.keepEndPunct=!1:t.keepEndPunct=!0}return void 0===t.keepPunct&&(t.keepPunct=!0),void 0===t.keepSpace&&(t.keepSpace=!0),function(e,t){let n="";if(!e||!e[0]||!e[0][0])return n;for(let r=0;r<e.length;r+=1)n+=en(e[r],t,!0);if(t.keepSpace||(n=n.trim()),!1===t.keepEndPunct){e[0][0].tags.has("Emoticon")||(n=n.replace(Zt,""));const t=e[e.length-1];t[t.length-1].tags.has("Emoticon")||(n=n.replace(Qt,"")),n.endsWith("'")&&!n.endsWith("s'")&&(n=n.replace(/'/,""))}return!0===t.cleanWhitespace&&(n=n.trim()),n}(this.docs,t)}};const pn=Object.assign({},gn,mn,cn,Rt),fn="[0m",bn={green:e=>"[32m"+e+fn,red:e=>"[31m"+e+fn,blue:e=>"[34m"+e+fn,magenta:e=>"[35m"+e+fn,cyan:e=>"[36m"+e+fn,yellow:e=>"[33m"+e+fn,black:e=>"[30m"+e+fn,dim:e=>"[2m"+e+fn,i:e=>"[3m"+e+fn},vn={tags:function(e){const{docs:t,model:n}=e;0===t.length&&console.log(bn.blue("\n ──────")),t.forEach((t=>{console.log(bn.blue("\n ┌─────────")),t.forEach((t=>{const r=[...t.tags||[]];let o=t.text||"-";t.sense&&(o=`{${t.normal}/${t.sense}}`),t.implicit&&(o="["+t.implicit+"]"),o=bn.yellow(o);let a="'"+o+"'";if(t.reference){const n=e.update([t.reference]).text("normal");a+=` - ${bn.dim(bn.i("["+n+"]"))}`}a=a.padEnd(18);const i=bn.blue(" │ ")+bn.i(a)+" - "+function(e,t){return t.one.tagSet&&(e=e.map((e=>{if(!t.one.tagSet.hasOwnProperty(e))return e;const n=t.one.tagSet[e].color||"blue";return bn[n](e)}))),e.join(", ")}(r,n);console.log(i)}))})),console.log("\n")},clientSide:function(e){console.log("%c -=-=- ","background-color:#6699cc;"),e.forEach((e=>{console.groupCollapsed(e.text());const t=e.docs[0].map((e=>{let t=e.text||"-";e.implicit&&(t="["+e.implicit+"]");return{text:t,tags:"["+Array.from(e.tags).join(", ")+"]"}}));console.table(t,["text","tags"]),console.groupEnd()}))},chunks:function(e){const{docs:t}=e;console.log(""),t.forEach((e=>{const t=[];e.forEach((e=>{"Noun"===e.chunk?t.push(bn.blue(e.implicit||e.normal)):"Verb"===e.chunk?t.push(bn.green(e.implicit||e.normal)):"Adjective"===e.chunk?t.push(bn.yellow(e.implicit||e.normal)):"Pivot"===e.chunk?t.push(bn.red(e.implicit||e.normal)):t.push(e.implicit||e.normal)})),console.log(t.join(" "),"\n")})),console.log("\n")},highlight:function(e){if(!e.found)return;const t={};e.fullPointer.forEach((e=>{t[e[0]]=t[e[0]]||[],t[e[0]].push(e)})),Object.keys(t).forEach((n=>{let r=e.update([[Number(n)]]).text();e.update(t[n]).json({offset:!0}).forEach(((e,t)=>{r=function(e,t,n){const r=((e,t,n)=>{const r=9*n,o=t.start+r,a=o+t.length;return[e.substring(0,o),e.substring(o,a),e.substring(a,e.length)]})(e,t,n);return`${r[0]}${bn.blue(r[1])}${r[2]}`}(r,e.offset,t)})),console.log(r)})),console.log("\n")}};var yn={api:function(e){Object.assign(e.prototype,pn)},methods:{one:{hash:on,debug:vn}}};const wn=function(e,t){if(e[0]!==t[0])return!1;const[,n,r]=e,[,o,a]=t;return n<=o&&r>o||o<=n&&a>n},kn=function(e){const t={};return e.forEach((e=>{t[e[0]]=t[e[0]]||[],t[e[0]].push(e)})),t},Pn=function(e,t){const n=kn(t),r=[];return e.forEach((e=>{const[t]=e;let o=n[t]||[];if(o=o.filter((t=>function(e,t){return e[1]<=t[1]&&t[2]<=e[2]}(e,t))),0===o.length)return void r.push({passthrough:e});o=o.sort(((e,t)=>e[1]-t[1]));let a=e;o.forEach(((e,t)=>{const n=function(e,t){const[n,r]=e,o=t[1],a=t[2],i={};if(r<o){const t=o<e[2]?o:e[2];i.before=[n,r,t]}return i.match=t,e[2]>a&&(i.after=[n,a,e[2]]),i}(a,e);o[t+1]?(r.push({before:n.before,match:n.match}),n.after&&(a=n.after)):r.push(n)}))})),r};var An={one:{termList:function(e){const t=[];for(let n=0;n<e.length;n+=1)for(let r=0;r<e[n].length;r+=1)t.push(e[n][r]);return t},getDoc:function(e,t){let n=[];return e.forEach(((r,o)=>{if(!r)return;let[a,i,s,l,u]=r,c=t[a]||[];if(void 0===i&&(i=0),void 0===s&&(s=c.length),!l||c[i]&&c[i].id===l)c=c.slice(i,s);else{const n=function(e,t,n){for(let r=0;r<20;r+=1){if(t[n-r]){const o=t[n-r].findIndex((t=>t.id===e));if(-1!==o)return[n-r,o]}if(t[n+r]){const o=t[n+r].findIndex((t=>t.id===e));if(-1!==o)return[n+r,o]}}return null}(l,t,a);if(null!==n){const r=s-i;c=t[n[0]].slice(n[1],n[1]+r);const a=c[0]?c[0].id:null;e[o]=[n[0],n[1],n[1]+r,a]}}0!==c.length&&i!==s&&(u&&c[c.length-1].id!==u&&(c=function(e,t){const[n,r,,,o]=e,a=t[n],i=a.findIndex((e=>e.id===o));return-1===i?(e[2]=t[n].length,e[4]=a.length?a[a.length-1].id:null):e[2]=i,t[n].slice(r,e[2]+1)}(r,t)),n.push(c))})),n=n.filter((e=>e.length>0)),n},pointer:{indexN:kn,splitAll:Pn}}};const Cn=function(e,t){const n=e.concat(t),r=kn(n);let o=[];return n.forEach((e=>{const[t]=e;if(1===r[t].length)return void o.push(e);const n=r[t].filter((t=>wn(e,t)));n.push(e);const a=function(e){let t=e[0][1],n=e[0][2];return e.forEach((e=>{e[1]<t&&(t=e[1]),e[2]>n&&(n=e[2])})),[e[0][0],t,n]}(n);o.push(a)})),o=function(e){const t={};for(let n=0;n<e.length;n+=1)t[e[n].join(",")]=e[n];return Object.values(t)}(o),o},Nn=function(e,t){const n=[];return Pn(e,t).forEach((e=>{e.passthrough&&n.push(e.passthrough),e.before&&n.push(e.before),e.after&&n.push(e.after)})),n},jn=(e,t)=>{return"string"==typeof e||(n=e,"[object Array]"===Object.prototype.toString.call(n))?t.match(e):e||t.none();var n},xn=function(e,t){return e.map((e=>{const[n,r]=e;return t[n]&&t[n][r]&&(e[3]=t[n][r].id),e}))},In={union:function(e){e=jn(e,this);let t=Cn(this.fullPointer,e.fullPointer);return t=xn(t,this.document),this.toView(t)}};In.and=In.union,In.intersection=function(e){e=jn(e,this);let t=function(e,t){const n=kn(t),r=[];return e.forEach((e=>{let t=n[e[0]]||[];t=t.filter((t=>wn(e,t))),0!==t.length&&t.forEach((t=>{const n=function(e,t){const n=e[1]<t[1]?t[1]:e[1],r=e[2]>t[2]?t[2]:e[2];return n<r?[e[0],n,r]:null}(e,t);n&&r.push(n)}))})),r}(this.fullPointer,e.fullPointer);return t=xn(t,this.document),this.toView(t)},In.not=function(e){e=jn(e,this);let t=Nn(this.fullPointer,e.fullPointer);return t=xn(t,this.document),this.toView(t)},In.difference=In.not,In.complement=function(){const e=this.all();let t=Nn(e.fullPointer,this.fullPointer);return t=xn(t,this.document),this.toView(t)},In.settle=function(){let e=this.fullPointer;return e.forEach((t=>{e=Cn(e,[t])})),e=xn(e,this.document),this.update(e)};var Tn={methods:An,api:function(e){Object.assign(e.prototype,In)}};const Dn=function(e){return!0===e.optional||!0===e.negative?null:e.tag?"#"+e.tag:e.word?e.word:e.switch?`%${e.switch}%`:null},Hn=function(e,t){const n=t.methods.one.parseMatch;return e.forEach((e=>{e.regs=n(e.match,{},t),"string"==typeof e.ifNo&&(e.ifNo=[e.ifNo]),e.notIf&&(e.notIf=n(e.notIf,{},t)),e.needs=function(e){const t=[];return e.forEach((e=>{t.push(Dn(e)),"and"===e.operator&&e.choices&&e.choices.forEach((e=>{e.forEach((e=>{t.push(Dn(e))}))}))})),t.filter((e=>e))}(e.regs);const{wants:r,count:o}=function(e){const t=[];let n=0;return e.forEach((e=>{"or"!==e.operator||e.optional||e.negative||(e.fastOr&&Array.from(e.fastOr).forEach((e=>{t.push(e)})),e.choices&&e.choices.forEach((e=>{e.forEach((e=>{const n=Dn(e);n&&t.push(n)}))})),n+=1)})),{wants:t,count:n}}(e.regs);e.wants=r,e.minWant=o,e.minWords=e.regs.filter((e=>!e.optional)).length})),e};var En={buildNet:function(e,t){e=Hn(e,t);const n={};e.forEach((e=>{e.needs.forEach((t=>{n[t]=Array.isArray(n[t])?n[t]:[],n[t].push(e)})),e.wants.forEach((t=>{n[t]=Array.isArray(n[t])?n[t]:[],n[t].push(e)}))})),Object.keys(n).forEach((e=>{const t={};n[e]=n[e].filter((e=>"boolean"!=typeof t[e.match]&&(t[e.match]=!0,!0)))}));const r=e.filter((e=>0===e.needs.length&&0===e.wants.length));return{hooks:n,always:r}},bulkMatch:function(e,t,n,r={}){const o=n.one.cacheDoc(e);let a=function(e,t){return e.map(((n,r)=>{let o=[];Object.keys(t).forEach((n=>{e[r].has(n)&&(o=o.concat(t[n]))}));const a={};return o=o.filter((e=>"boolean"!=typeof a[e.match]&&(a[e.match]=!0,!0))),o}))}(o,t.hooks);a=function(e,t){return e.map(((e,n)=>{const r=t[n];return(e=(e=e.filter((e=>e.needs.every((e=>r.has(e)))))).filter((e=>void 0===e.ifNo||!0!==e.ifNo.some((e=>r.has(e)))))).filter((e=>0===e.wants.length||e.wants.filter((e=>r.has(e))).length>=e.minWant))}))}(a,o),t.always.length>0&&(a=a.map((e=>e.concat(t.always)))),a=function(e,t){return e.map(((e,n)=>{const r=t[n].length;return e=e.filter((e=>r>=e.minWords)),e}))}(a,e);const i=function(e,t,n,r,o){const a=[];for(let n=0;n<e.length;n+=1)for(let i=0;i<e[n].length;i+=1){const s=e[n][i],l=r.one.match([t[n]],s);if(l.ptrs.length>0&&(l.ptrs.forEach((e=>{e[0]=n;const t=Object.assign({},s,{pointer:e});void 0!==s.unTag&&(t.unTag=s.unTag),a.push(t)})),!0===o.matchOne))return[a[0]]}return a}(a,e,0,n,r);return i},bulkTagger:function(e,t,n){const{model:r,methods:o}=n,{getDoc:a,setTag:i,unTag:s}=o.one,l=o.two.looksPlural;if(0===e.length)return e;return("undefined"!=typeof process&&process.env?process.env:self.env||{}).DEBUG_TAGS&&console.log(`\n\n [32m→ ${e.length} post-tagger:[0m`),e.map((e=>{if(!e.tag&&!e.chunk&&!e.unTag)return;const o=e.reason||e.match,u=a([e.pointer],t)[0];if(!0===e.safe){if(!1===function(e,t,n){const r=n.one.tagSet;if(!r.hasOwnProperty(t))return!0;const o=r[t].not||[];for(let t=0;t<e.length;t+=1){const n=e[t];for(let e=0;e<o.length;e+=1)if(!0===n.tags.has(o[e]))return!1}return!0}(u,e.tag,r))return;if("-"===u[u.length-1].post)return}if(void 0!==e.tag){if(i(u,e.tag,n,e.safe,`[post] '${o}'`),"Noun"===e.tag&&l){const t=u[u.length-1];l(t.text)?i([t],"Plural",n,e.safe,"quick-plural"):i([t],"Singular",n,e.safe,"quick-singular")}!0===e.freeze&&u.forEach((e=>e.frozen=!0))}void 0!==e.unTag&&s(u,e.unTag,n,e.safe,o),e.chunk&&u.forEach((t=>t.chunk=e.chunk))}))}},Gn={lib:{buildNet:function(e){const t=this.methods().one.buildNet(e,this.world());return t.isNet=!0,t}},api:function(e){e.prototype.sweep=function(e,t={}){const{world:n,docs:r}=this,{methods:o}=n;let a=o.one.bulkMatch(r,e,this.methods,t);!1!==t.tagger&&o.one.bulkTagger(a,r,this.world),a=a.map((e=>{const t=e.pointer,n=r[t[0]][t[1]],o=t[2]-t[1];return n.index&&(e.pointer=[n.index[0],n.index[1],t[1]+o]),e}));const i=a.map((e=>e.pointer));return a=a.map((e=>(e.view=this.update([e.pointer]),delete e.regs,delete e.needs,delete e.pointer,delete e._expanded,e))),{view:this.update(i),found:a}}},methods:{one:En}};const On=/ /,Fn=function(e,t){"Noun"===t&&(e.chunk=t),"Verb"===t&&(e.chunk=t)},Vn=function(e,t,n,r){if(!0===e.tags.has(t))return null;if("."===t)return null;!0===e.frozen&&(r=!0);const o=n[t];if(o){if(o.not&&o.not.length>0)for(let t=0;t<o.not.length;t+=1){if(!0===r&&e.tags.has(o.not[t]))return null;e.tags.delete(o.not[t])}if(o.parents&&o.parents.length>0)for(let t=0;t<o.parents.length;t+=1)e.tags.add(o.parents[t]),Fn(e,o.parents[t])}return e.tags.add(t),e.dirty=!0,Fn(e,t),!0},zn=function(e,t,n={},r,o){const a=n.model.one.tagSet||{};if(!t)return;const i="undefined"!=typeof process&&process.env?process.env:self.env||{};var s;if(i&&i.DEBUG_TAGS&&((e,t,n="")=>{const r=e.map((e=>e.text||"["+e.implicit+"]")).join(" ");var o;"string"!=typeof t&&t.length>2&&(t=t.slice(0,2).join(", #")+" +"),t="string"!=typeof t?t.join(", #"):t,console.log(` ${(o=r,"[33m[3m"+o+"[0m").padEnd(24)} [32m→[0m #${t.padEnd(22)} ${(e=>"[3m"+e+"[0m")(n)}`)})(e,t,o),!0!=(s=t,"[object Array]"===Object.prototype.toString.call(s)))if("string"==typeof t)if(t=t.trim(),On.test(t))!function(e,t,n,r){const o=t.split(On);e.forEach(((e,t)=>{let a=o[t];a&&(a=a.replace(/^#/,""),Vn(e,a,n,r))}))}(e,t,a,r);else{t=t.replace(/^#/,"");for(let n=0;n<e.length;n+=1)Vn(e[n],t,a,r)}else console.warn(`compromise: Invalid tag '${t}'`);else t.forEach((t=>zn(e,t,n,r)))},Bn=function(e){return e.children=e.children||[],e._cache=e._cache||{},e.props=e.props||{},e._cache.parents=e._cache.parents||[],e._cache.children=e._cache.children||[],e},Sn=/^ *(#|\/\/)/,$n=function(e){let t=e.trim().split(/->/),n=[];t.forEach((e=>{n=n.concat(function(e){if(!(e=e.trim()))return null;if(/^\[/.test(e)&&/\]$/.test(e)){let t=(e=(e=e.replace(/^\[/,"")).replace(/\]$/,"")).split(/,/);return t=t.map((e=>e.trim())).filter((e=>e)),t=t.map((e=>Bn({id:e}))),t}return[Bn({id:e})]}(e))})),n=n.filter((e=>e));let r=n[0];for(let e=1;e<n.length;e+=1)r.children.push(n[e]),r=n[e];return n[0]},Mn=(e,t)=>{let n=[],r=[e];for(;r.length>0;){let e=r.pop();n.push(e),e.children&&e.children.forEach((n=>{t&&t(e,n),r.push(n)}))}return n},Ln=e=>"[object Array]"===Object.prototype.toString.call(e),Kn=e=>(e=e||"").trim(),Jn=function(e=[]){return"string"==typeof e?function(e){let t=e.split(/\r?\n/),n=[];t.forEach((e=>{if(!e.trim()||Sn.test(e))return;let t=(e=>{const t=/^( {2}|\t)/;let n=0;for(;t.test(e);)e=e.replace(t,""),n+=1;return n})(e);n.push({indent:t,node:$n(e)})}));let r=function(e){let t={children:[]};return e.forEach(((n,r)=>{0===n.indent?t.children=t.children.concat(n.node):e[r-1]&&function(e,t){let n=e[t].indent;for(;t>=0;t-=1)if(e[t].indent<n)return e[t];return e[0]}(e,r).node.children.push(n.node)})),t}(n);return r=Bn(r),r}(e):Ln(e)?function(e){let t={};e.forEach((e=>{t[e.id]=e}));let n=Bn({});return e.forEach((e=>{if((e=Bn(e)).parent)if(t.hasOwnProperty(e.parent)){let n=t[e.parent];delete e.parent,n.children.push(e)}else console.warn(`[Grad] - missing node '${e.parent}'`);else n.children.push(e)})),n}(e):(Mn(t=e).forEach(Bn),t);var t},Wn=function(e,t){let n="-> ";t&&(n=(e=>"[2m"+e+"[0m")("→ "));let r="";return Mn(e).forEach(((e,o)=>{let a=e.id||"";if(t&&(a=(e=>"[31m"+e+"[0m")(a)),0===o&&!e.id)return;let i=e._cache.parents.length;r+=" ".repeat(i)+n+a+"\n"})),r},qn=function(e){let t=Mn(e);t.forEach((e=>{delete(e=Object.assign({},e)).children}));let n=t[0];return n&&!n.id&&0===Object.keys(n.props).length&&t.shift(),t},Un={text:Wn,txt:Wn,array:qn,flat:qn},Rn=function(e,t){return"nested"===t||"json"===t?e:"debug"===t?(console.log(Wn(e,!0)),null):Un.hasOwnProperty(t)?Un[t](e):e},Qn=e=>{Mn(e,((e,t)=>{e.id&&(e._cache.parents=e._cache.parents||[],t._cache.parents=e._cache.parents.concat([e.id]))}))},Zn=/\//;let _n=class g{constructor(e={}){Object.defineProperty(this,"json",{enumerable:!1,value:e,writable:!0})}get children(){return this.json.children}get id(){return this.json.id}get found(){return this.json.id||this.json.children.length>0}props(e={}){let t=this.json.props||{};return"string"==typeof e&&(t[e]=!0),this.json.props=Object.assign(t,e),this}get(e){if(e=Kn(e),!Zn.test(e)){let t=this.json.children.find((t=>t.id===e));return new g(t)}let t=((e,t)=>{let n=(e=>"string"!=typeof e?e:(e=e.replace(/^\//,"")).split(/\//))(t=t||"");for(let t=0;t<n.length;t+=1){let r=e.children.find((e=>e.id===n[t]));if(!r)return null;e=r}return e})(this.json,e)||Bn({});return new g(t)}add(e,t={}){if(Ln(e))return e.forEach((e=>this.add(Kn(e),t))),this;e=Kn(e);let n=Bn({id:e,props:t});return this.json.children.push(n),new g(n)}remove(e){return e=Kn(e),this.json.children=this.json.children.filter((t=>t.id!==e)),this}nodes(){return Mn(this.json).map((e=>(delete(e=Object.assign({},e)).children,e)))}cache(){return(e=>{let t=Mn(e,((e,t)=>{e.id&&(e._cache.parents=e._cache.parents||[],e._cache.children=e._cache.children||[],t._cache.parents=e._cache.parents.concat([e.id]))})),n={};t.forEach((e=>{e.id&&(n[e.id]=e)})),t.forEach((e=>{e._cache.parents.forEach((t=>{n.hasOwnProperty(t)&&n[t]._cache.children.push(e.id)}))})),e._cache.children=Object.keys(n)})(this.json),this}list(){return Mn(this.json)}fillDown(){var e;return e=this.json,Mn(e,((e,t)=>{t.props=((e,t)=>(Object.keys(t).forEach((n=>{if(t[n]instanceof Set){let r=e[n]||new Set;e[n]=new Set([...r,...t[n]])}else if((e=>e&&"object"==typeof e&&!Array.isArray(e))(t[n])){let r=e[n]||{};e[n]=Object.assign({},t[n],r)}else Ln(t[n])?e[n]=t[n].concat(e[n]||[]):void 0===e[n]&&(e[n]=t[n])})),e))(t.props,e.props)})),this}depth(){Qn(this.json);let e=Mn(this.json),t=e.length>1?1:0;return e.forEach((e=>{if(0===e._cache.parents.length)return;let n=e._cache.parents.length+1;n>t&&(t=n)})),t}out(e){return Qn(this.json),Rn(this.json,e)}debug(){return Qn(this.json),Rn(this.json,"debug"),this}};const Xn=function(e){let t=Jn(e);return new _n(t)};Xn.prototype.plugin=function(e){e(this)};const Yn={Noun:"blue",Verb:"green",Negative:"green",Date:"red",Value:"red",Adjective:"magenta",Preposition:"cyan",Conjunction:"cyan",Determiner:"cyan",Hyphenated:"cyan",Adverb:"cyan"},er=function(e){if(Yn.hasOwnProperty(e.id))return Yn[e.id];if(Yn.hasOwnProperty(e.is))return Yn[e.is];const t=e._cache.parents.find((e=>Yn[e]));return Yn[t]},tr=function(e){return e?"string"==typeof e?[e]:e:[]},nr=function(e,t){return e=function(e,t){return Object.keys(e).forEach((n=>{e[n].isA&&(e[n].is=e[n].isA),e[n].notA&&(e[n].not=e[n].notA),e[n].is&&"string"==typeof e[n].is&&(t.hasOwnProperty(e[n].is)||e.hasOwnProperty(e[n].is)||(e[e[n].is]={})),e[n].not&&"string"==typeof e[n].not&&!e.hasOwnProperty(e[n].not)&&(t.hasOwnProperty(e[n].not)||e.hasOwnProperty(e[n].not)||(e[e[n].not]={}))})),e}(e,t),Object.keys(e).forEach((t=>{e[t].children=tr(e[t].children),e[t].not=tr(e[t].not)})),Object.keys(e).forEach((t=>{(e[t].not||[]).forEach((n=>{e[n]&&e[n].not&&e[n].not.push(t)}))})),e};var rr={one:{setTag:zn,unTag:function(e,t,n){t=t.trim().replace(/^#/,"");for(let r=0;r<e.length;r+=1){const o=e[r];if(!0===o.frozen)continue;if("*"===t){o.tags.clear();continue}const a=n[t];if(a&&a.children.length>0)for(let e=0;e<a.children.length;e+=1)o.tags.delete(a.children[e]);o.tags.delete(t)}},addTags:function(e,t){Object.keys(t).length>0&&(e=function(e){return Object.keys(e).forEach((t=>{e[t]=Object.assign({},e[t]),e[t].novel=!0})),e}(e)),e=nr(e,t);const n=function(e){const t=Object.keys(e).map((t=>{const n=e[t],r={not:new Set(n.not),also:n.also,is:n.is,novel:n.novel};return{id:t,parent:n.is,props:r,children:[]}}));return Xn(t).cache().fillDown().out("array")}(Object.assign({},t,e)),r=function(e){const t={};return e.forEach((e=>{const{not:n,also:r,is:o,novel:a}=e.props;let i=e._cache.parents;r&&(i=i.concat(r)),t[e.id]={is:o,not:n,novel:a,also:r,parents:i,children:e._cache.children,color:er(e)}})),Object.keys(t).forEach((e=>{const n=new Set(t[e].not);t[e].not.forEach((e=>{t[e]&&t[e].children.forEach((e=>n.add(e)))})),t[e].not=Array.from(n)})),t}(n);return r},canBe:function(e,t,n){if(!n.hasOwnProperty(t))return!0;const r=n[t].not||[];for(let t=0;t<r.length;t+=1)if(e.tags.has(r[t]))return!1;return!0}}};const or=function(e){return"[object Array]"===Object.prototype.toString.call(e)},ar={tag:function(e,t="",n){if(!this.found||!e)return this;const r=this.termList();if(0===r.length)return this;const{methods:o,verbose:a,world:i}=this;return!0===a&&console.log(" + ",e,t||""),or(e)?e.forEach((e=>o.one.setTag(r,e,i,n,t))):o.one.setTag(r,e,i,n,t),this.uncache(),this},tagSafe:function(e,t=""){return this.tag(e,t,!0)},unTag:function(e,t){if(!this.found||!e)return this;const n=this.termList();if(0===n.length)return this;const{methods:r,verbose:o,model:a}=this;!0===o&&console.log(" - ",e,t||"");const i=a.one.tagSet;return or(e)?e.forEach((e=>r.one.unTag(n,e,i))):r.one.unTag(n,e,i),this.uncache(),this},canBe:function(e){e=e.replace(/^#/,"");const t=this.model.one.tagSet,n=this.methods.one.canBe,r=[];this.document.forEach(((o,a)=>{o.forEach(((o,i)=>{n(o,e,t)||r.push([a,i,i+1])}))}));const o=this.update(r);return this.difference(o)}};var ir={addTags:function(e){const{model:t,methods:n}=this.world(),r=t.one.tagSet,o=(0,n.one.addTags)(e,r);return t.one.tagSet=o,this}};const sr=new Set(["Auxiliary","Possessive"]);var lr={model:{one:{tagSet:{}}},compute:{tagRank:function(e){const{document:t,world:n}=e,r=n.model.one.tagSet;t.forEach((e=>{e.forEach((e=>{const t=Array.from(e.tags);e.tagRank=function(e,t){return e=e.sort(((e,n)=>{if(sr.has(e)||!t.hasOwnProperty(n))return 1;if(sr.has(n)||!t.hasOwnProperty(e))return-1;let r=t[e].children||[];const o=r.length;return r=t[n].children||[],o-r.length})),e}(t,r)}))}))}},methods:rr,api:function(e){Object.assign(e.prototype,ar)},lib:ir};const ur=/([.!?\u203D\u2E18\u203C\u2047-\u2049\u3002]+\s)/g,cr=/^[.!?\u203D\u2E18\u203C\u2047-\u2049\u3002]+\s$/,hr=/((?:\r?\n|\r)+)/,dr=/[a-z0-9\u00C0-\u00FF\u00a9\u00ae\u2000-\u3300\ud000-\udfff]/i,gr=/\S/,mr=function(e){return Boolean(e.match(/\n$/))},pr={'"':'"',""":""","“":"”","‟":"”","„":"”","⹂":"”","‚":"’","«":"»","‹":"›","‵":"′","‶":"″","‷":"‴","〝":"〞","〟":"〞"},fr=RegExp("["+Object.keys(pr).join("")+"]","g"),br=RegExp("["+Object.values(pr).join("")+"]","g"),vr=function(e){if(!e)return!1;const t=e.match(br);return null!==t&&1===t.length},yr=/\(/g,wr=/\)/g,kr=/\S/,Pr=/^\s+/,Ar=function(e,t){const n=e.split(/[-–—]/);if(n.length<=1)return!1;const{prefixes:r,suffixes:o}=t.one;if(1===n[0].length&&/[a-z]/i.test(n[0]))return!1;if(r.hasOwnProperty(n[0]))return!1;if(n[1]=n[1].trim().replace(/[.?!]$/,""),o.hasOwnProperty(n[1]))return!1;if(!0===/^([a-z\u00C0-\u00FF`"'/]+)[-–—]([a-z0-9\u00C0-\u00FF].*)/i.test(e))return!0;return!0===/^[('"]?([0-9]{1,4})[-–—]([a-z\u00C0-\u00FF`"'/-]+[)'"]?$)/i.test(e)},Cr=function(e){const t=[],n=e.split(/[-–—]/);let r="-";const o=e.match(/[-–—]/);o&&o[0]&&(r=o);for(let e=0;e<n.length;e++)e===n.length-1?t.push(n[e]):t.push(n[e]+r);return t},Nr=/\p{L} ?\/ ?\p{L}+$/u,jr=/\S/,xr=/^[!?.]+$/,Ir=/(\S+)/;let Tr=[".","?","!",":",";","-","–","—","--","...","(",")","[","]",'"',"'","`","«","»","*","•"];Tr=Tr.reduce(((e,t)=>(e[t]=!0,e)),{});const Dr=/\p{Letter}/u,Hr=/[\p{Number}\p{Currency_Symbol}]/u,Er=/^[a-z]\.([a-z]\.)+/i,Gr=/[sn]['’]$/,Or=/([A-Z]\.)+[A-Z]?,?$/,Fr=/^[A-Z]\.,?$/,Vr=/[A-Z]{2,}('s|,)?$/,zr=/([a-z]\.)+[a-z]\.?$/,Br=function(e){return function(e){return!0===Or.test(e)||!0===zr.test(e)||!0===Fr.test(e)||!0===Vr.test(e)}(e)&&(e=e.replace(/\./g,"")),e},Sr=function(e,t){const n=t.methods.one.killUnicode;let r=e.text||"";r=function(e){const t=e=(e=(e=e||"").toLowerCase()).trim();return e=(e=(e=e.replace(/[,;.!?]+$/,"")).replace(/\u2026/g,"...")).replace(/\u2013/g,"-"),!1===/^[:;]/.test(e)&&(e=(e=(e=e.replace(/\.{3,}$/g,"")).replace(/[",.!:;?)]+$/g,"")).replace(/^['"(]+/g,"")),""===(e=(e=e.replace(/[\u200B-\u200D\uFEFF]/g,"")).trim())&&(e=t),e.replace(/([0-9]),([0-9])/g,"$1$2")}(r),r=n(r,t),r=Br(r),e.normal=r},$r=/[ .][A-Z]\.? *$/i,Mr=/(?:\u2026|\.{2,}) *$/,Lr=/\p{L}/u,Kr=/\. *$/,Jr=/^[A-Z]\. $/;var Wr={one:{killUnicode:function(e,t){const n=t.model.one.unicode||{},r=(e=e||"").split("");return r.forEach(((e,t)=>{n[e]&&(r[t]=n[e])})),r.join("")},tokenize:{splitSentences:function(e,t){if(e=e||"",!(e=String(e))||"string"!=typeof e||!1===kr.test(e))return[];const n=function(e){const t=[],n=e.split(hr);for(let e=0;e<n.length;e++){const r=n[e].split(ur);for(let e=0;e<r.length;e++)r[e+1]&&!0===cr.test(r[e+1])&&(r[e]+=r[e+1],r[e+1]=""),""!==r[e]&&t.push(r[e])}return t}(e=e.replace(" "," "));let r=function(e){const t=[];for(let n=0;n<e.length;n++){const r=e[n];if(void 0!==r&&""!==r){if(!1===gr.test(r)||!1===dr.test(r)){if(t[t.length-1]){t[t.length-1]+=r;continue}if(e[n+1]){e[n+1]=r+e[n+1];continue}}t.push(r)}}return t}(n);if(r=function(e,t){const n=t.methods.one.tokenize.isSentence,r=t.model.one.abbreviations||new Set,o=[];for(let t=0;t<e.length;t++){const a=e[t];!e[t+1]||n(a,r)||mr(a)?a&&a.length>0&&(o.push(a),e[t]=""):e[t+1]=a+(e[t+1]||"")}return o}(r,t),r=function(e){const t=[];for(let n=0;n<e.length;n+=1){const r=e[n].match(fr);if(null!==r&&1===r.length){if(vr(e[n+1])&&e[n+1].length<280){e[n]+=e[n+1],t.push(e[n]),e[n+1]="",n+=1;continue}if(vr(e[n+2])){const r=e[n+1]+e[n+2];if(r.length<280){e[n]+=r,t.push(e[n]),e[n+1]="",e[n+2]="",n+=2;continue}}}t.push(e[n])}return t}(r),r=function(e){const t=[];for(let n=0;n<e.length;n+=1){const r=e[n].match(yr);null!==r&&1===r.length&&e[n+1]&&e[n+1].length<250&&null!==e[n+1].match(wr)&&1===r.length&&!yr.test(e[n+1])?(e[n]+=e[n+1],t.push(e[n]),e[n+1]="",n+=1):t.push(e[n])}return t}(r),0===r.length)return[e];for(let e=1;e<r.length;e+=1){const t=r[e].match(Pr);null!==t&&(r[e-1]+=t[0],r[e]=r[e].replace(Pr,""))}return r},isSentence:function(e,t){if(!1===Lr.test(e))return!1;if(!0===$r.test(e))return!1;if(3===e.length&&Jr.test(e))return!1;if(!0===Mr.test(e))return!1;const n=e.replace(/[.!?\u203D\u2E18\u203C\u2047-\u2049] *$/,"").split(" "),r=n[n.length-1].toLowerCase();return!0!==t.hasOwnProperty(r)||!0!==Kr.test(e)},splitTerms:function(e,t){let n=[],r=[];if("number"==typeof(e=e||"")&&(e=String(e)),function(e){return"[object Array]"===Object.prototype.toString.call(e)}(e))return e;const o=e.split(Ir);for(let e=0;e<o.length;e++)!0!==Ar(o[e],t)?r.push(o[e]):r=r.concat(Cr(o[e]));let a="";for(let e=0;e<r.length;e++){const t=r[e];!0===jr.test(t)&&!1===Tr.hasOwnProperty(t)&&!1===xr.test(t)?(n.length>0?(n[n.length-1]+=a,n.push(t)):n.push(a+t),a=""):a+=t}return a&&(0===n.length&&(n[0]=""),n[n.length-1]+=a),n=function(e){for(let t=1;t<e.length-1;t++)Nr.test(e[t])&&(e[t-1]+=e[t]+e[t+1],e[t]=null,e[t+1]=null);return e}(n),n=function(e){const t=/^[0-9]{1,4}(:[0-9][0-9])?([a-z]{1,2})? ?[-–—] ?$/,n=/^[0-9]{1,4}([a-z]{1,2})? ?$/;for(let r=0;r<e.length-1;r+=1)e[r+1]&&t.test(e[r])&&n.test(e[r+1])&&(e[r]=e[r]+e[r+1],e[r+1]=null);return e}(n),n=n.filter((e=>e)),n},splitWhitespace:(e,t)=>{const{str:n,pre:r,post:o}=function(e,t){const{prePunctuation:n,postPunctuation:r,emoticons:o}=t.one;let a=e,i="",s="";const l=Array.from(e);if(o.hasOwnProperty(e.trim()))return{str:e.trim(),pre:i,post:" "};let u=l.length;for(let e=0;e<u;e+=1){const e=l[0];if(!0!==n[e]){if(("+"===e||"-"===e)&&Hr.test(l[1]))break;if("'"===e&&3===e.length&&Hr.test(l[1]))break;if(Dr.test(e)||Hr.test(e))break;i+=l.shift()}}u=l.length;for(let e=0;e<u;e+=1){const e=l[l.length-1];if(!0!==r[e]){if(Dr.test(e)||Hr.test(e))break;"."===e&&!0===Er.test(a)||"'"===e&&!0===Gr.test(a)||(s=l.pop()+s)}}return""===(e=l.join(""))&&(a=a.replace(/ *$/,(e=>(s=e||"",""))),e=a,i=""),{str:e,pre:i,post:s}}(e,t);return{text:n,pre:r,post:o,tags:new Set}},fromString:function(e,t){const{methods:n,model:r}=t,{splitSentences:o,splitTerms:a,splitWhitespace:i}=n.one.tokenize;return e=o(e=e||"",t).map((e=>{let n=a(e,r);return n=n.map((e=>i(e,r))),n.forEach((e=>{Sr(e,t)})),n})),e}}}};const qr={},Ur={};[[["approx","apt","bc","cyn","eg","esp","est","etc","ex","exp","prob","pron","gal","min","pseud","fig","jd","lat","lng","vol","fm","def","misc","plz","ea","ps","sec","pt","pref","pl","pp","qt","fr","sq","nee","ss","tel","temp","vet","ver","fem","masc","eng","adj","vb","rb","inf","situ","vivo","vitro","wr"]],[["dl","ml","gal","qt","pt","tbl","tsp","tbsp","km","dm","cm","mm","mi","td","hr","hrs","kg","hg","dg","cg","mg","µg","lb","oz","sq ft","hz","mps","mph","kmph","kb","mb","tb","lx","lm","fl oz","yb"],"Unit"],[["ad","al","arc","ba","bl","ca","cca","col","corp","ft","fy","ie","lit","ma","md","pd","tce"],"Noun"],[["adj","adm","adv","asst","atty","bldg","brig","capt","cmdr","comdr","cpl","det","dr","esq","gen","gov","hon","jr","llb","lt","maj","messrs","mlle","mme","mr","mrs","ms","mstr","phd","prof","pvt","rep","reps","res","rev","sen","sens","sfc","sgt","sir","sr","supt","surg"],"Honorific"],[["jan","feb","mar","apr","jun","jul","aug","sep","sept","oct","nov","dec"],"Month"],[["dept","univ","assn","bros","inc","ltd","co"],"Organization"],[["rd","st","dist","mt","ave","blvd","cl","cres","hwy","ariz","cal","calif","colo","conn","fla","fl","ga","ida","ia","kan","kans","minn","neb","nebr","okla","penna","penn","pa","dak","tenn","tex","ut","vt","va","wis","wisc","wy","wyo","usafa","alta","ont","que","sask"],"Place"]].forEach((e=>{e[0].forEach((t=>{qr[t]=!0,Ur[t]="Abbreviation",void 0!==e[1]&&(Ur[t]=[Ur[t],e[1]])}))}));var Rr=["anti","bi","co","contra","de","extra","infra","inter","intra","macro","micro","mis","mono","multi","peri","pre","pro","proto","pseudo","re","sub","supra","trans","tri","un","out","ex"].reduce(((e,t)=>(e[t]=!0,e)),{});const Qr={"!":"¡","?":"¿Ɂ",'"':'“”"❝❞',"'":"‘‛❛❜’","-":"—–",a:"ªÀÁÂÃÄÅàáâãäåĀāĂ㥹ǍǎǞǟǠǡǺǻȀȁȂȃȦȧȺΆΑΔΛάαλАаѦѧӐӑӒӓƛæ",b:"ßþƀƁƂƃƄƅɃΒβϐϦБВЪЬвъьѢѣҌҍ",c:"¢©ÇçĆćĈĉĊċČčƆƇƈȻȼͻͼϲϹϽϾСсєҀҁҪҫ",d:"ÐĎďĐđƉƊȡƋƌ",e:"ÈÉÊËèéêëĒēĔĕĖėĘęĚěƐȄȅȆȇȨȩɆɇΈΕΞΣέεξϵЀЁЕеѐёҼҽҾҿӖӗễ",f:"ƑƒϜϝӺӻҒғſ",g:"ĜĝĞğĠġĢģƓǤǥǦǧǴǵ",h:"ĤĥĦħƕǶȞȟΉΗЂЊЋНнђћҢңҤҥҺһӉӊ",I:"ÌÍÎÏ",i:"ìíîïĨĩĪīĬĭĮįİıƖƗȈȉȊȋΊΐΪίιϊІЇіїi̇",j:"ĴĵǰȷɈɉϳЈј",k:"ĶķĸƘƙǨǩΚκЌЖКжкќҚқҜҝҞҟҠҡ",l:"ĹĺĻļĽľĿŀŁłƚƪǀǏǐȴȽΙӀӏ",m:"ΜϺϻМмӍӎ",n:"ÑñŃńŅņŇňʼnŊŋƝƞǸǹȠȵΝΠήηϞЍИЙЛПийлпѝҊҋӅӆӢӣӤӥπ",o:"ÒÓÔÕÖØðòóôõöøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱΌΘΟθοσόϕϘϙϬϴОФоѲѳӦӧӨөӪӫ",p:"ƤΡρϷϸϼРрҎҏÞ",q:"Ɋɋ",r:"ŔŕŖŗŘřƦȐȑȒȓɌɍЃГЯгяѓҐґ",s:"ŚśŜŝŞşŠšƧƨȘșȿЅѕ",t:"ŢţŤťŦŧƫƬƭƮȚțȶȾΓΤτϮТт",u:"ÙÚÛÜùúûüŨũŪūŬŭŮůŰűŲųƯưƱƲǓǔǕǖǗǘǙǚǛǜȔȕȖȗɄΰυϋύ",v:"νѴѵѶѷ",w:"ŴŵƜωώϖϢϣШЩшщѡѿ",x:"×ΧχϗϰХхҲҳӼӽӾӿ",y:"ÝýÿŶŷŸƳƴȲȳɎɏΎΥΫγψϒϓϔЎУучўѰѱҮүҰұӮӯӰӱӲӳ",z:"ŹźŻżŽžƵƶȤȥɀΖ"},Zr={};Object.keys(Qr).forEach((function(e){Qr[e].split("").forEach((function(t){Zr[t]=e}))}));const _r=/\//,Xr=/[a-z]\.[a-z]/i,Yr=/[0-9]/,eo=function(e,t){const n=e.normal||e.text||e.machine,r=t.model.one.aliases;if(r.hasOwnProperty(n)&&(e.alias=e.alias||[],e.alias.push(r[n])),_r.test(n)&&!Xr.test(n)&&!Yr.test(n)){const t=n.split(_r);t.length<=3&&t.forEach((t=>{""!==(t=t.trim())&&(e.alias=e.alias||[],e.alias.push(t))}))}return e},to=/^\p{Letter}+-\p{Letter}+$/u,no=function(e){let t=e.implicit||e.normal||e.text;t=t.replace(/['’]s$/,""),t=t.replace(/s['’]$/,"s"),t=t.replace(/([aeiou][ktrp])in'$/,"$1ing"),to.test(t)&&(t=t.replace(/-/g,"")),t=t.replace(/^[#@]/,""),t!==e.normal&&(e.machine=t)},ro=function(e,t){const n=e.docs;for(let r=0;r<n.length;r+=1)for(let o=0;o<n[r].length;o+=1)t(n[r][o],e.world)},oo={alias:e=>ro(e,eo),machine:e=>ro(e,no),normal:e=>ro(e,Sr),freq:function(e){const t=e.docs,n={};for(let e=0;e<t.length;e+=1)for(let r=0;r<t[e].length;r+=1){const o=t[e][r],a=o.machine||o.normal;n[a]=n[a]||0,n[a]+=1}for(let e=0;e<t.length;e+=1)for(let r=0;r<t[e].length;r+=1){const o=t[e][r],a=o.machine||o.normal;o.freq=n[a]}},offset:function(e){let t=0,n=0;const r=e.document;for(let e=0;e<r.length;e+=1)for(let o=0;o<r[e].length;o+=1){const a=r[e][o];a.offset={index:n,start:t+a.pre.length,length:a.text.length},t+=a.pre.length+a.text.length+a.post.length,n+=1}},index:function(e){const t=e.document;for(let e=0;e<t.length;e+=1)for(let n=0;n<t[e].length;n+=1)t[e][n].index=[e,n]},wordCount:function(e){let t=0;const n=e.docs;for(let e=0;e<n.length;e+=1)for(let r=0;r<n[e].length;r+=1)""!==n[e][r].normal&&(t+=1,n[e][r].wordCount=t)}};var ao={compute:oo,methods:Wr,model:{one:{aliases:{"&":"and","@":"at","%":"percent",plz:"please",bein:"being"},abbreviations:qr,prefixes:Rr,suffixes:{like:!0,ish:!0,less:!0,able:!0,elect:!0,type:!0,designate:!0},prePunctuation:{"#":!0,"@":!0,_:!0,"°":!0,"":!0,"":!0,"":!0,"\ufeff":!0},postPunctuation:{"%":!0,_:!0,"°":!0,"":!0,"":!0,"":!0,"\ufeff":!0},lexicon:Ur,unicode:Zr,emoticons:{"<3":!0,"</3":!0,"<\\3":!0,":^P":!0,":^p":!0,":^O":!0,":^3":!0}}},hooks:["alias","machine","index","id"]};var io={typeahead:function(e){const t=e.model.one.typeahead,n=e.docs;if(0===n.length||0===Object.keys(t).length)return;const r=n[n.length-1]||[],o=r[r.length-1];if(!o.post&&t.hasOwnProperty(o.normal)){const n=t[o.normal];o.implicit=n,o.machine=n,o.typeahead=!0,e.compute.preTagger&&e.last().unTag("*").compute(["lexicon","preTagger"])}}};const so=function(){const e=this.docs;if(0===e.length)return this;const t=e[e.length-1]||[],n=t[t.length-1];return!0===n.typeahead&&n.machine&&(n.text=n.machine,n.normal=n.machine),this},lo={safe:!0,min:3};var uo={typeahead:function(e=[],t={}){const n=this.model();var r;t=Object.assign({},lo,t),r=e,"[object Object]"===Object.prototype.toString.call(r)&&(Object.assign(n.one.lexicon,e),e=Object.keys(e));const o=function(e,t,n){let r={};const o=[],a=n.prefixes||{};return e.forEach((e=>{let i=(e=e.toLowerCase().trim()).length;t.max&&i>t.max&&(i=t.max);for(let s=t.min;s<i;s+=1){const i=e.substring(0,s);t.safe&&n.model.one.lexicon.hasOwnProperty(i)||(!0!==a.hasOwnProperty(i)&&!0!==r.hasOwnProperty(i)?r[i]=e:o.push(i))}})),r=Object.assign({},a,r),o.forEach((e=>{delete r[e]})),r}(e,t,this.world());return Object.keys(o).forEach((e=>{n.one.typeahead.hasOwnProperty(e)?delete n.one.typeahead[e]:n.one.typeahead[e]=o[e]})),this}};var co={model:{one:{typeahead:{}}},api:function(e){e.prototype.autoFill=so},lib:uo,compute:io,hooks:["typeahead"]};h.extend(J),h.extend(yn),h.extend(Jt),h.extend(Tn),h.extend(lr),h.plugin(ye),h.extend(ao),h.extend(Ce),h.plugin(p),h.extend(Be),h.extend(co),h.extend(Ee),h.extend(Gn);var ho={addendum:"addenda",corpus:"corpora",criterion:"criteria",curriculum:"curricula",genus:"genera",memorandum:"memoranda",opus:"opera",ovum:"ova",phenomenon:"phenomena",referendum:"referenda",alga:"algae",alumna:"alumnae",antenna:"antennae",formula:"formulae",larva:"larvae",nebula:"nebulae",vertebra:"vertebrae",analysis:"analyses",axis:"axes",diagnosis:"diagnoses",parenthesis:"parentheses",prognosis:"prognoses",synopsis:"synopses",thesis:"theses",neurosis:"neuroses",appendix:"appendices",index:"indices",matrix:"matrices",ox:"oxen",sex:"sexes",alumnus:"alumni",bacillus:"bacilli",cactus:"cacti",fungus:"fungi",hippopotamus:"hippopotami",libretto:"libretti",modulus:"moduli",nucleus:"nuclei",octopus:"octopi",radius:"radii",stimulus:"stimuli",syllabus:"syllabi",cookie:"cookies",calorie:"calories",auntie:"aunties",movie:"movies",pie:"pies",rookie:"rookies",tie:"ties",zombie:"zombies",leaf:"leaves",loaf:"loaves",thief:"thieves",foot:"feet",goose:"geese",tooth:"teeth",beau:"beaux",chateau:"chateaux",tableau:"tableaux",bus:"buses",gas:"gases",circus:"circuses",crisis:"crises",virus:"viruses",database:"databases",excuse:"excuses",abuse:"abuses",avocado:"avocados",barracks:"barracks",child:"children",clothes:"clothes",echo:"echoes",embargo:"embargoes",epoch:"epochs",deer:"deer",halo:"halos",man:"men",woman:"women",mosquito:"mosquitoes",mouse:"mice",person:"people",quiz:"quizzes",rodeo:"rodeos",shoe:"shoes",sombrero:"sombreros",stomach:"stomachs",tornado:"tornados",tuxedo:"tuxedos",volcano:"volcanoes"},go={Comparative:"true¦bett1f0;arth0ew0in0;er",Superlative:"true¦earlier",PresentTense:"true¦bests,sounds",Condition:"true¦lest,unless",PastTense:"true¦began,came,d4had,kneel3l2m0sa4we1;ea0sg2;nt;eap0i0;ed;id",Participle:"true¦0:09;a06b01cZdXeat0fSgQhPoJprov0rHs7t6u4w1;ak0ithdra02o2r1;i02uY;k0v0;nd1pr04;ergoJoJ;ak0hHo3;e9h7lain,o6p5t4un3w1;o1um;rn;g,k;ol0reS;iQok0;ught,wn;ak0o1runk;ne,wn;en,wn;ewriNi1uJ;dd0s0;ut3ver1;do4se0t1;ak0h2;do2g1;roG;ne;ast0i7;iv0o1;ne,tt0;all0loBor1;bi3g2s1;ak0e0;iv0o9;dd0;ove,r1;a5eamt,iv0;hos0lu1;ng;e4i3lo2ui1;lt;wn;tt0;at0en,gun;r2w1;ak0ok0;is0;en",Gerund:"true¦accord0be0doin,go0result0stain0;ing",Expression:"true¦a0Yb0Uc0Sd0Oe0Mfarew0Lg0FhZjeez,lWmVnToOpLsJtIuFvEw7y0;a5e3i1u0;ck,p;k04p0;ee,pee;a0p,s;!h;!a,h,y;a5h2o1t0;af,f;rd up,w;atsoever,e1o0;a,ops;e,w;hoo,t;ery w06oi0L;gh,h0;! 0h,m;huh,oh;here nPsk,ut tut;h0ic;eesh,hh,it,oo;ff,h1l0ow,sst;ease,s,z;ew,ooey;h1i,mg,o0uch,w,y;h,o,ps;! 0h;hTmy go0wT;d,sh;a7evertheless,o0;!pe;eh,mm;ah,eh,m1ol0;!s;ao,fao;aCeBi9o2u0;h,mph,rra0zzC;h,y;l1o0;r6y9;la,y0;! 0;c1moCsmok0;es;ow;!p hip hoor0;ay;ck,e,llo,y;ha1i,lleluj0;ah;!ha;ah,ee4o1r0;eat scott,r;l1od0sh; grief,bye;ly;! whiz;ell;e0h,t cetera,ureka,ww,xcuse me;k,p;'oh,a0rat,uh;m0ng;mit,n0;!it;mon,o0;ngratulations,wabunga;a2oo1r0tw,ye;avo,r;!ya;h,m; 1h0ka,las,men,rgh,ye;!a,em,h,oy;la",Negative:"true¦n0;ever,o0;n,t",QuestionWord:"true¦how3wh0;at,e1ich,o0y;!m,se;n,re; come,'s",Reflexive:"true¦h4it5my5o1the0your2;ir1m1;ne3ur0;sel0;f,ves;er0im0;self",Plural:"true¦dick0gre0ones,records;ens","Unit|Noun":"true¦cEfDgChBinchAk9lb,m6newt5oz,p4qt,t1y0;ardEd;able1b0ea1sp;!l,sp;spo1;a,t,x;on9;!b,g,i1l,m,p0;h,s;!les;!b,elvin,g,m;!es;g,z;al,b;eet,oot,t;m,up0;!s",Value:"true¦a few",Imperative:"true¦bewa0come he0;re","Plural|Verb":"true¦leaves",Demonym:"true¦0:15;1:12;a0Vb0Oc0Dd0Ce08f07g04h02iYjVkTlPmLnIomHpEqatari,rCs7t5u4v3welAz2;am0Gimbabwe0;enezuel0ietnam0I;gAkrai1;aiwTex0hai,rinida0Ju2;ni0Prkmen;a5cotti4e3ingapoOlovak,oma0Spaniard,udRw2y0W;ede,iss;negal0Cr09;sh;mo0uT;o5us0Jw2;and0;a2eru0Fhilippi0Nortugu07uerto r0S;kist3lesti1na2raguay0;ma1;ani;ami00i2orweP;caragu0geri2;an,en;a3ex0Lo2;ngo0Drocc0;cedo1la2;gasy,y07;a4eb9i2;b2thua1;e0Cy0;o,t01;azakh,eny0o2uwaiI;re0;a2orda1;ma0Ap2;anO;celandic,nd4r2sraeli,ta01vo05;a2iB;ni0qi;i0oneU;aiAin2ondur0unO;di;amEe2hanai0reek,uatemal0;or2rm0;gi0;ilipino,ren8;cuadoVgyp4mira3ngli2sto1thiopi0urope0;shm0;ti;ti0;aPominUut3;a9h6o4roat3ub0ze2;ch;!i0;lom2ngol5;bi0;a6i2;le0n2;ese;lifor1m2na3;bo2eroo1;di0;angladeshi,el6o4r3ul2;gaE;azi9it;li2s1;vi0;aru2gi0;si0;fAl7merBngol0r5si0us2;sie,tr2;a2i0;li0;genti2me1;ne;ba1ge2;ri0;ni0;gh0r2;ic0;an",Organization:"true¦0:4Q;a3Tb3Bc2Od2He2Df27g1Zh1Ti1Pj1Nk1Ll1Gm12n0Po0Mp0Cqu0Br02sTtHuCv9w3xiaomi,y1;amaha,m1Bou1w1B;gov,tu3C;a4e2iki1orld trade organizati33;leaRped0O;lls fargo,st1;fie2Hinghou2R;l1rner br3U;gree3Jl street journ2Im1E;an halOeriz2Xisa,o1;dafo2Yl1;kswagMvo;b4kip,n2ps,s1;a tod3Aps;es3Mi1;lev3Fted natio3C;er,s; mobi32aco beRd bOe9gi frida3Lh3im horto3Amz,o1witt3D;shi49y1;ota,s r 05;e 1in lizzy;b3carpen3Jdaily ma3Dguess w2holli0s1w2;mashing pumpki35uprem0;ho;ea1lack eyed pe3Xyr0Q;ch bo3Dtl0;l2n3Qs1xas instrumen1U;co,la m1F;efoni0Kus;a8cientology,e5ieme2Ymirnoff,np,o3pice gir6quare0Ata1ubaru;rbuc1to34;ks;ny,undgard1;en;a2x pisto1;ls;g1Wrs;few2Minsbur31lesfor03msu2E;adiohead,b8e4o1yana3C;man empi1Xyal 1;b1dutch she4;ank;a3d 1max,vl20;bu1c2Ahot chili peppe2Ylobst2N;ll;ders dige1Ll madrid;c,s;ant3Aizn2Q;a8bs,e5fiz2Ihilip4i3r1;emier 1udenti1D;leagTo2K;nk floyd,zza hut; morrBs;psi2tro1uge0E;br33chi0Tn33;!co;lant2Un1yp16; 2ason27da2P;ld navy,pec,range juli2xf1;am;us;aAb9e6fl,h5i4o1sa,vid3wa;k2tre dame,vart1;is;ia;ke,ntendo,ss0QvZ;l,s;c,st1Otflix,w1; 1sweek;kids on the block,york0D;a,c;nd22s2t1;ional aca2Po,we0U;a,c02d0S;aDcdonalCe9i6lb,o3tv,y1;spa1;ce;b1Tnsanto,ody blu0t1;ley cr1or0T;ue;c2t1;as,subisO;helin,rosoft;dica2rcedes benz,talli1;ca;id,re;ds;cs milk,tt19z24;a3e1g,ittle caesa1P; ore09novo,x1;is,mark,us; 1bour party;pres0Dz boy;atv,fc,kk,lm,m1od1O;art;iffy lu0Roy divisi0Jpmorgan1sa;! cha09;bm,hop,k3n1tv;g,te1;l,rpol;ea;a5ewlett pack1Vi3o1sbc,yundai;me dep1n1P;ot;tac1zbollah;hi;lliburt08sbro;eneral 6hq,ithub,l5mb,o2reen d0Ou1;cci,ns n ros0;ldman sachs,o1;dye1g0H;ar;axo smith kli04encoW;electr0Nm1;oto0Z;a5bi,c barcelo4da,edex,i2leetwood m03o1rito l0G;rd,xcY;at,fa,nancial1restoZ; tim0;na;cebook,nnie mae;b0Asa,u3xxon1; m1m1;ob0J;!rosceptics;aiml0De5isney,o4u1;nkin donu2po0Zran dur1;an;ts;j,w jon0;a,f lepp12ll,peche mode,r spieg02stiny's chi1;ld;aJbc,hFiDloudflaCnn,o3r1;aigsli5eedence clearwater reviv1ossra09;al;c7inba6l4m1o0Est09;ca2p1;aq;st;dplSg1;ate;se;a c1o chanQ;ola;re;a,sco1tigroup;! systems;ev2i1;ck fil a,na daily;r1y;on;d2pital o1rls jr;ne;bury,ill1;ac;aEbc,eBf9l5mw,ni,o1p,rexiteeU;ei3mbardiIston 1;glo1pizza;be;ng;o2ue c1;roV;ckbuster video,omingda1;le; g1g1;oodriL;cht2e ge0rkshire hathaw1;ay;el;cardi,idu,nana republ3s1xt5y5;f,kin robbi1;ns;ic;bYcTdidSerosmith,iRlKmEnheuser busDol,ppleAr6s4u3v2y1;er;is,on;di,todesk;hland o1sociated E;il;b3g2m1;co;os;ys; compu1be0;te1;rs;ch;c,d,erican3t1;!r1;ak; ex1;pre1;ss; 5catel2ta1;ir;! lu1;ce1;nt;jazeera,qae1;da;g,rbnb;as;/dc,a3er,tivision1;! blizz1;ard;demy of scienc0;es;ba",Possessive:"true¦its,my,our0thy;!s","Noun|Verb":"true¦0:9W;1:AA;2:96;3:A3;4:9R;5:A2;6:9K;7:8N;8:7L;9:A8;A:93;B:8D;C:8X;a9Ob8Qc7Id6Re6Gf5Sg5Hh55i4Xj4Uk4Rl4Em40n3Vo3Sp2Squ2Rr21s0Jt02u00vVwGyFzD;ip,oD;ne,om;awn,e6Fie68;aOeMhJiHoErD;ap,e9Oink2;nd0rDuC;kDry,sh5Hth;!shop;ck,nDpe,re,sh;!d,g;e86iD;p,sD;k,p0t2;aDed,lco8W;r,th0;it,lk,rEsDt4ve,x;h,te;!ehou1ra9;aGen5FiFoD;iDmAte,w;ce,d;be,ew,sA;cuum,l4B;pDr7;da5gra6Elo6A;aReQhrPiOoMrGuEwiDy5Z;n,st;nDrn;e,n7O;aGeFiEoDu6;t,ub2;bu5ck4Jgg0m,p;at,k,nd;ck,de,in,nsDp,v7J;f0i8R;ll,ne,p,r4Yss,t94uD;ch,r;ck,de,e,le,me,p,re;e5Wow,u6;ar,e,ll,mp0st,xt;g,lDng2rg7Ps5x;k,ly;a0Sc0Ne0Kh0Fi0Dk0Cl0Am08n06o05pXquaBtKuFwD;ea88iD;ng,pe,t4;bGit,m,ppErD;fa3ge,pri1v2U;lDo6S;e6Py;!je8;aMeLiKoHrEuDy2;dy,ff,mb2;a85eEiDo5Pugg2;ke,ng;am,ss,t4;ckEop,p,rD;e,m;ing,pi2;ck,nk,t4;er,m,p;ck,ff,ge,in,ke,lEmp,nd,p2rDte,y;!e,t;k,l;aJeIiHlGoFrDur,y;ay,e56inDu3;g,k2;ns8Bt;a5Qit;ll,n,r87te;ed,ll;m,n,rk;b,uC;aDee1Tow;ke,p;a5Je4FiDo53;le,rk;eep,iDou4;ce,p,t;ateboa7Ii;de,gnDl2Vnk,p,ze;!al;aGeFiEoDuff2;ck,p,re,w;ft,p,v0;d,i3Ylt0;ck,de,pe,re,ve;aEed,nDrv1It;se,t2N;l,r4t;aGhedu2oBrD;aEeDibb2o3Z;en,w;pe,t4;le,n,r2M;cDfegua72il,mp2;k,rifi3;aZeHhy6LiGoEuD;b,in,le,n,s5X;a6ck,ll,oDpe,u5;f,t;de,ng,ot,p,s1W;aTcSdo,el,fQgPje8lOmMnLo17pJque6sFturn,vDwa6V;eDi27;al,r1;er74oFpe8tEuD;lt,me;!a55;l71rt;air,eaDly,o53;l,t;dezvo2Zt;aDedy;ke,rk;ea1i4G;a6Iist0r5N;act6Yer1Vo71uD;nd,se;a38o6F;ch,s6G;c1Dge,iEke,lly,nDp1Wt1W;ge,k,t;n,se;es6Biv0;a04e00hYiXlToNrEsy4uD;mp,n4rcha1sh;aKeIiHoDu4O;be,ceFdu3fi2grDje8mi1p,te6;amDe6W;!me;ed,ss;ce,de,nt;sDy;er6Cs;cti3i1;iHlFoEp,re,sDuCw0;e,i5Yt;l,p;iDl;ce,sh;nt,s5V;aEce,e32uD;g,mp,n7;ce,nDy;!t;ck,le,n17pe,tNvot;a1oD;ne,tograph;ak,eFnErDt;fu55mA;!c32;!l,r;ckJiInHrFsEtDu1y;ch,e9;s,te;k,tD;!y;!ic;nt,r,se;!a7;bje8ff0il,oErDutli3Qver4B;bAd0ie9;ze;a4ReFoDur1;d,tD;e,i3;ed,gle8tD;!work;aMeKiIoEuD;rd0;ck,d3Rld,nEp,uDve;nt,th;it5EkD;ey;lk,n4Brr5CsDx;s,ta2B;asuBn4UrDss;ge,it;il,nFp,rk3WsEtD;ch,t0;h,k,t0;da5n0oeuvB;aLeJiHoEuD;mp,st;aEbby,ck,g,oDve;k,t;d,n;cDe,ft,mAnIst;en1k;aDc0Pe4vK;ch,d,k,p,se;bFcEnd,p,t4uD;gh,n4;e,k;el,o2U;eEiDno4E;ck,d,ll,ss;el,y;aEo1OuD;i3mp;m,zz;mpJnEr46ssD;ue;c1Rdex,fluGha2k,se2HteDvoi3;nt,rD;e6fa3viD;ew;en3;a8le2A;aJeHiGoEuD;g,nt;l3Ano2Dok,pDr1u1;!e;ghli1Fke,nt,re,t;aDd7lp;d,t;ck,mGndFrEsh,tDu9;ch,e;bo3Xm,ne4Eve6;!le;!m0;aMear,ift,lKossJrFuD;arDe4Alp,n;antee,d;aFiEoDumb2;uCwth;ll,nd,p;de,sp;ip;aBoDue;ss,w;g,in,me,ng,s,te,ze;aZeWiRlNoJrFuD;ck,el,nDss,zz;c38d;aEoDy;st,wn;cDgme,me,nchi1;tuB;cFg,il,ld,rD;ce,e29mDwa31;!at;us;aFe0Vip,oDy;at,ck,od,wD;!er;g,ke,me,re,sh,vo1E;eGgFlEnDre,sh,t,x;an3i0Q;e,m,t0;ht,uB;ld;aEeDn3;d,l;r,tuB;ce,il,ll,rm,vo2W;cho,d7ffe8nMsKxFyeD;!baD;ll;cGerci1hFpDtra8;eriDo0W;en3me9;au6ibA;el,han7u1;caDtima5;pe;count0d,vy;a01eSiMoJrEuDye;b,el,mp,pli2X;aGeFiEoD;ne,p;ft,ll,nk,p,ve;am,ss;ft,g,in;cEd7ubt,wnloD;ad;k,u0E;ge6p,sFt4vD;e,iDor3;de;char7gui1h,liEpD;at4lay,u5;ke;al,bKcJfeIlGmaCposAsEtaD;il;e07iD;gn,re;ay,ega5iD;ght;at,ct;li04rea1;a5ut;b,ma7n3rDte;e,t;a0Eent0Dh06irc2l03oKrFuD;be,e,rDt;b,e,l,ve;aGeFoEuDy;sh;p,ss,wd;dAep;ck,ft,sh;at,de,in,lTmMnFordina5py,re,st,uDv0;gh,nDp2rt;s01t;ceHdu8fli8glomeIsFtDveN;a8rD;a6ol;e9tru8;ct;ntDrn;ra5;bHfoGmFpD;leDouCromi1;me9;aCe9it,u5;rt;at,iD;ne;lap1oD;r,ur;aEiDoud,ub;ck,p;im,w;aEeDip;at,ck,er;iGllen7nErD;ge,m,t;ge,nD;el;n,r;er,re;ke,ll,mp,noe,pGrXsFtEuDve;se,ti0I;alog,ch;h,t;!tuB;re;a03eZiXlToPrHuEyD;pa11;bb2ck2dgEff0mp,rDst,zz;den,n;et;anJeHiFoadEuD;i1sh;ca6;be,d7;ge;aDed;ch,k;ch,d;aFg,mb,nEoDrd0tt2x,ycott;k,st,t;d,e;rd,st;aFeCiDoYur;nk,tz;nd;me;as,d,ke,nd,opsy,tD;!ch,e;aFef,lt,nDt;d,efA;it;r,t;ck,il,lan3nIrFsEtt2;le;e,h;!gDk;aDe;in;!d,g,k;bu1c05dZge,iYlVnTppQrLsIttGucEwaD;rd;tiD;on;aDempt;ck;k,sD;i6ocia5;st;chFmD;!oD;ur;!iD;ve;eEroa4;ch;al;chDg0sw0;or;aEt0;er;rm;d,m,r;dreHvD;an3oD;ca5;te;ce;ss;cDe,he,t;eFoD;rd,u9;nt;nt,ss;se",Actor:"true¦0:7B;1:7G;2:6A;3:7F;4:7O;5:7K;a6Nb62c4Ud4Be41f3Sg3Bh30i2Uj2Qkin2Pl2Km26n1Zo1Sp0Vqu0Tr0JsQtJuHvEw8yo6;gi,ut6;h,ub0;aAe9i8o7r6;estl0it0;m2rk0;fe,nn0t2Bza2H;atherm2ld0;ge earn0it0nder0rri1;eter7i6oyF;ll5Qp,s3Z;an,ina2U;n6s0;c6Uder03;aoisea23e9herapi5iktok0o8r6ut1yco6S;a6endseLo43;d0mp,nscri0Bvel0;ddl0u1G;a0Qchn7en6na4st0;ag0;i3Oo0D;aiXcUeRhPiMki0mu26oJpGquaFtBu7wee6;p0theart;lt2per7r6;f0ge6Iviv1;h6inten0Ist5Ivis1;ero,um2;a8ep7r6;ang0eam0;bro2Nc2Ofa2Nmo2Nsi20;ff0tesm2;tt0;ec7ir2Do6;kesp59u0M;ia5Jt3;l7me6An,rcere6ul;r,ss;di0oi5;n7s6;sy,t0;g0n0;am2ephe1Iow6;girl,m2r2Q;cretInior cit3Fr6;gea4v6;a4it1;hol4Xi7reen6ulpt1;wr2C;e01on;l1nt;aEe9o8u6;l0nn6;er up,ingE;g40le mod3Zof0;a4Zc8fug2Ppo32searQv6;ere4Uolution6;ary;e6luYru22;ptio3T;bbi,dic5Vpp0;arter6e2Z;back;aYeWhSiRlOoKr8sycho7u6;nk,p31;logi5;aGeDiBo6;d9fess1g7ph47s6;pe2Ktitu51;en6ramm0;it1y;igy,uc0;est4Nme mini0Unce6s3E;!ss;a7si6;de4;ch0;ctiti39nk0P;dca0Oet,li6pula50rnst42;c2Itic6;al scie6i2;nti5;a6umb0;nn0y6;er,ma4Lwright;lgrim,one0;a8iloso7otogra7ra6ysi1V;se;ph0;ntom,rmaci5;r6ssi1T;form0s4O;i3El,nel3Yr8st1tr6wn;i6on;arWot;ent4Wi42tn0;ccupa4ffBp8r7ut6;ca5l0B;ac4Iganiz0ig2Fph2;er3t6;i1Jomet6;ri5;ic0spring;aBe9ie4Xo7u6;n,rser3J;b6mad,vi4V;le2Vo4D;i6mesis,phew;ce,ghb1;nny,rr3t1X;aEeDiAo7u6yst1Y;m8si16;der3gul,m7n6th0;arDk;!my;ni7s6;f02s0Jt0;on,st0;chan1Qnt1rcha4;gi9k0n8rtyr,t6y1;e,riar6;ch;ag0iac;ci2stra3I;a7e2Aieutena4o6;rd,s0v0;bor0d7ndlo6ss,urea3Fwy0ym2;rd;!y;!s28;e8o7u6;ggl0;gg0urna2U;st0;c3Hdol,llu3Ummigra4n6; l9c1Qfa4habi42nov3s7ve6;nt1stig3;pe0Nt6;a1Fig3ru0M;aw;airFeBistoAo8u6ygie1K;man6sba2H;!ita8;bo,st6usekN;age,e3P;ri2;ir,r6;m7o6;!ine;it;dress0sty2C;aLeIhostGirl26ladi3oCrand7u6;e5ru;c9daug0Jfa8m7pa6s2Y;!re4;a,o6;th0;hi1B;al7d6lf0;!de3A;ie,k6te26;eep0;!wr6;it0;isha,n6;i6tl04;us;mbl0rden0;aDella,iAo7r6;eela2Nie1P;e,re6ster pare4;be1Hm2r6st0;unn0;an2ZgZlmm17nanci0r6tt0;e6st la2H; marsh2OfigXm2;rm0th0;conoEdDlectriCm8n7x6;amin0cellency,i2A;emy,trepreneur,vironmenta1J;c8p6;er1loye6;e,r;ee;ci2;it1;mi5;aKeBi8ork,ri7u6we02;de,tche2H;ft0v0;ct3eti7plom2Hre6va;ct1;ci2ti2;aDcor3fencCi0InAput9s7tectLvel6;op0;ce1Ge6ign0;rt0;ee,y;iz6;en;em2;c1Ml0;d8nc0redev7ug6;ht0;il;!dy;a06e04fo,hXitizenWlToBr9u6;r3stomer6;! representat6;ive;e3it6;ic;lJmGnAord9rpor1Nu7w6;boy,ork0;n6ri0;ciTte1Q;in3;fidantAgressSs9t6;e0Kr6;ibut1o6;ll0;tab13ul1O;!e;edi2m6pos0rade;a0EeQissi6;on0;leag8on7um6;ni5;el;ue;e6own;an0r6;ic,k;!s;a9e7i6um;ld;erle6f;ad0;ir7nce6plFract0;ll1;m2wI;lebri6o;ty;dBptAr6shi0;e7pe6;nt0;r,t6;ak0;ain;et;aMeLiJlogg0oErBu6;dd0Fild0rgl9siness6;m2p7w6;om2;ers05;ar;i7o6;!k0th0;cklay0de,gadi0;hemi2oge8y6;!frie6;nd;ym2;an;cyc6sR;li5;atbox0ings;by,nk0r6;b0on7te6;nd0;!e07;c04dWge4nQpLrHsFtAu7yatull6;ah;nt7t6;h1oG;!ie;h8t6;e6orney;nda4;ie5le6;te;sis00tron6;aut,om0;chbis8isto7tis6;an,t;crU;hop;ost9p6;ari6rentiS;ti6;on;le;a9cest1im3nou8y6;bo6;dy;nc0;ly5rc6;hi5;mi8v6;entur0is1;er;ni7r6;al;str3;at1;or;counBquaintanArob9t6;ivi5or,re6;ss;st;at;ce;ta4;nt","Adj|Noun":"true¦0:16;a1Db17c0Ud0Re0Mf0Dg0Ah08i06ju05l02mWnUoSpNrIsBt7u4v1watershed;a1ision0Z;gabo4nilla,ria1;b0Vnt;ndergr1pstairs;adua14ou1;nd;a3e1oken,ri0;en,r1;min0rori13;boo,n;age,e5ilv0Flack,o3quat,ta2u1well;bordina0Xper5;b0Lndard;ciali0Yl1vereign;e,ve16;cret,n1ri0;ior;a4e2ou1ubbiL;nd,tiY;ar,bBl0Wnt0p1side11;resent0Vublican;ci0Qsh;a4eriodic0last0Zotenti0r1;emi2incip0o1;!fession0;er,um;rall4st,tie0U;ff1pposi0Hv0;ens0Oi0C;agg01ov1uts;el;a5e3iniatJo1;bi01der07r1;al,t0;di1tr0N;an,um;le,riG;attOi2u1;sh;ber0ght,qC;stice,veniT;de0mpressioYn1;cumbe0Edividu0no0Dsta0Eterim;alf,o1umdrum;bby,melF;en2old,ra1;ph0Bve;er0ious;a7e5i4l3u1;git03t1;ure;uid;ne;llow,m1;aFiL;ir,t,vo1;riOuriO;l3p00x1;c1ecutUpeV;ess;d1iK;er;ar2e1;mographUrivO;k,l2;hiGlassSo2rude,unn1;ing;m5n1operK;creCstitueOte2vertab1;le;mpor1nt;ary;ic,m2p1;anion,lex;er2u1;ni8;ci0;al;e5lank,o4r1;i2u1;te;ef;ttom,urgeois;st;cadem9d6l2ntarct9r1;ab,ct8;e3tern1;at1;ive;rt;oles1ult;ce1;nt;ic","Adj|Past":"true¦0:4Q;1:4C;2:4H;3:4E;a44b3Tc36d2Je29f20g1Wh1Si1Jj1Gkno1Fl1Am15n12o0Xp0Mqu0Kr08sLtEuAv9w4yellow0;a7ea6o4rinkl0;r4u3Y;n,ri0;k31th3;rp0sh0tZ;ari0e1O;n5p4s0;d1li1Rset;cov3derstood,i4;fi0t0;a8e3Rhr7i6ouTr4urn0wi4C;a4imm0ou2G;ck0in0pp0;ed,r0;eat2Qi37;m0nn0r4;get0ni2T;aOcKeIhGimFm0Hoak0pDt7u4;bsid3Ogge44s4;pe4ta2Y;ct0nd0;a8e7i2Eok0r5u4;ff0mp0nn0;ength2Hip4;ed,p0;am0reotyp0;in0t0;eci4ik0oH;al3Efi0;pRul1;a4ock0ut;d0r0;a4c1Jle2t31;l0s3Ut0;a6or5r4;at4e25;ch0;r0tt3;t4ut0;is2Mur1;aEe5o4;tt0;cAdJf2Bg9je2l8m0Knew0p7qu6s4;eTpe2t4;or0ri2;e3Dir0;e1lac0;at0e2Q;i0Rul1;eiv0o4ycl0;mme2Lrd0v3;in0lli0ti2A;a4ot0;li28;aCer30iBlAo9r5u4;mp0zzl0;e6i2Oo4;ce2Fd4lo1Anou30pos0te2v0;uc0;fe1CocCp0Iss0;i2Kli1L;ann0e2CuS;ck0erc0ss0;ck0i2Hr4st0;allLk0;bse7c6pp13rgan2Dver4;lo4whelm0;ok0;cupi0;rv0;aJe5o4;t0uri1A;ed0gle2;a6e5ix0o4ut0ys1N;di1Nt15u26;as0Clt0;n4rk0;ag0ufact0A;e6i5o4;ad0ck0st,v0;cens0m04st0;ft,v4;el0;tt0wn;a5o15u4;dg0s1B;gg0;llumSmpAn4sol1;br0cre1Ldebt0f8jZspir0t5v4;it0olv0;e4ox0Y;gr1n4re23;d0si15;e2l1o1Wuri1;li0o01r4;ov0;a6e1o4um03;ok0r4;ri0Z;mm3rm0;i6r5u4;a1Bid0;a0Ui0Rown;ft0;aAe9i8l6oc0Ir4;a4i0oz0Y;ctHg19m0;avo0Ju4;st3;ni08tt0x0;ar0;d0il0sc4;in1;dCl1mBn9quipp0s8x4;agger1c6p4te0T;a0Se4os0;ct0rie1D;it0;cap0tabliZ;cha0XgFha1As4;ur0;a0Zbarra0N;i0Buc1;aMeDi5r4;a01i0;gni08miniSre2s4;a9c6grun0Ft4;o4re0Hu17;rt0;iplWou4;nt0r4;ag0;bl0;cBdRf9l8p7ra6t5v4;elop0ot0;ail0ermQ;ng0;re07;ay0ight0;e4in0o0M;rr0;ay0enTor1;m5t0z4;ed,zl0;ag0p4;en0;aPeLhIlHo9r6u4;lt4r0stom03;iv1;a5owd0u4;sh0;ck0mp0;d0loAm7n4ok0v3;centr1f5s4troC;id3olid1;us0;b5pl4;ic1;in0;r0ur0;assi9os0utt3;ar5i4;ll0;g0m0;lebr1n6r4;ti4;fi0;tralJ;g0lcul1;aDewild3iCl9o7r5urn4;ed,t;ok4uis0;en;il0r0t4und;tl0;e5i4;nd0;ss0;as0;ffl0k0laMs0tt3;bPcNdKfIg0lFmaz0nDppBrm0ss9u5wa4;rd0;g5thor4;iz0;me4;nt0;o6u4;m0r0;li0re4;ci1;im1ticip1;at0;a5leg0t3;er0;rm0;fe2;ct0;ju5o7va4;nc0;st0;ce4knowledg0;pt0;and5so4;rb0;on0;ed",Singular:"true¦0:5J;1:5H;2:4W;3:4S;4:52;5:57;6:5L;7:56;8:5B;a52b4Lc3Nd35e2Xf2Og2Jh28in24j23k22l1Um1Ln1Ho1Bp0Rqu0Qr0FsZtMuHvCw9x r58yo yo;a9ha3Po3Q;f3i4Rt0Gy9;! arou39;arCeAideo ga2Qo9;cabu4Jl5C;gOr9t;di4Zt1Y;iety,ni4P;nBp30rAs 9;do43s5E;bani1in0;coordinat3Ader9;estima1to24we41; rex,aKeJhHiFoErBuAv9;! show;m2On2rntLto1D;agedy,ib9o4E;e,u9;n0ta46;ni1p2rq3L;c,er,m9;etF;ing9ree26;!y;am,mp3F;ct2le6x return;aNcMeKhor4QiJkHoGpin off,tDuBy9;ll9ner7st4T;ab2X;b9i1n28per bowl,rro1X;st3Ltot0;atAipe2Go1Lrate7udent9;! lo0I;i39u1;ft ser4Lmeo1I;elet5i9;ll,r3V;b38gn2Tte;ab2Jc9min3B;t,urity gua2N;e6ho2Y;bbatic0la3Jndwi0Qpi5;av5eDhetor2iAo9;de6om,w;tAv9;erb2C;e,u0;bDcBf9publ2r10spi1;er9orm3;e6r0;i9ord label;p2Ht0;a1u46;estion mark,ot2F;aPeMhoLiIlGoErAu9yram1F;ddi3HpErpo1Js3J;eBo9;bl3Zs9;pe3Jta1;dic1Rmi1Fp1Qroga8ss relea1F;p9rt0;py;a9ebisci1;q2Dte;cn2eAg9;!gy;!r;ne call,tocoK;anut,dAr9t0yo1;cen3Jsp3K;al,est0;nop4rAt9;e,hog5;adi11i2V;atme0bj3FcBpia1rde0thers,utspok5ve9wn3;n,r9;ti0Pview;cuAe9;an;pi3;arBitAot9umb3;a2Fhi2R;e,ra1;cot2ra8;aFeCiAo9ur0;nopo4p18rni2Nsq1Rti36uld;c,li11n0As9tt5;chief,si34;dAnu,t9;al,i3;al,ic;gna1mm0nd15rsupi0te9yf4;ri0;aDegCiBu9;ddi1n9;ch;me,p09; Be0M;bor14y9; 9er;up;eyno1itt5;el4ourn0;cBdices,itia8ni25sAtel0Lvert9;eb1J;e28titu1;en8i2T;aIeEighDoAu9;man right,s22;me9rmoFsp1Ftb0K;! r9;un; scho0YriY;a9i1N;d9v5; start,pho9;ne;ndful,sh brown,v5ze;aBelat0Ilaci3r9ul4yp1S;an9enadi3id;a1Cd slam,ny;df4r9;l2ni1I;aGeti1HiFlu1oCrAun9;er0;ee market,i9onti3;ga1;l4ur9;so9;me;ePref4;br2mi4;conoFffi7gg,lecto0Rmbas1EnCpidem2s1Zth2venBxAyel9;id;ampZempl0Nte6;i19t;er7terp9;ri9;se;my;eLiEoBr9ump tru0U;agonf4i9;er,ve thru;cAg7i4or,ssi3wn9;side;to0EumenE;aEgniDnn3sAvide9;nd;conte6incen8p9tri11;osi9;ti0C;ta0H;le0X;athBcAf9ni0terre6;ault 05err0;al,im0;!b9;ed;aWeThMiLlJoDr9;edit caBuc9;ib9;le;rd;efficDke,lCmmuniqLnsApi3rr0t0Xus9yo1;in;erv9uI;ato02;ic,lQ;ie6;er7i9oth;e6n2;ty,vil wM;aDeqCick5ocoBr9;istmas car9ysanthemum;ol;la1;ue;ndeli3racteri9;st2;iAllEr9;e0tifica1;liZ;hi3nFpErCt9ucus;erpi9hedr0;ll9;ar;!bohyd9ri3;ra1;it0;aAe,nib0t9;on;l,ry;aMeLiop2leJoHrDu9;nny,r9tterf4;g9i0;la9;ry;eakAi9;ck;fa9throB;st;dy,ro9wl;ugh;mi9;sh;an,l4;nkiArri3;er;ng;cSdMlInFppeti1rDsBtt2utop9;sy;ic;ce6pe9;ct;r9sen0;ay;ecAoma4tiA;ly;do1;i5l9;er7y;gy;en; hominDjAvan9;tage;ec8;ti9;ve;em;cCeAqui9;tt0;ta1;te;iAru0;al;de6;nt","Person|Noun":"true¦a0Eb07c03dWeUfQgOhLjHkiGlFmCnBolive,p7r4s3trini06v1wa0;ng,rd,tts;an,enus,iol0;a,et;ky,onPumm09;ay,e1o0uby;bin,d,se;ed,x;a2e1o0;l,tt04;aLnJ;dYge,tR;at,orm;a0eloW;t0x,ya;!s;a9eo,iH;ng,tP;a2e1o0;lGy;an,w3;de,smi4y;a0erb,iOolBuntR;ll,z0;el;ail,e0iLuy;ne;a1ern,i0lo;elds,nn;ith,n0;ny;a0dEmir,ula,ve;rl;a4e3i1j,ol0;ly;ck,x0;ie;an,ja;i0wn;sy;am,h0liff,rystal;a0in,ristian;mbers,ri0;ty;a4e3i2o,r0ud;an0ook;dy;ll;nedict,rg;k0nks;er;l0rt;fredo,ma","Actor|Verb":"true¦aCb8c5doctor,engineAfool,g3host,judge,m2nerd,p1recruit,scout,ushAvolunteAwi0;mp,tneA;arent,ilot;an,ime;eek,oof,r0uide;adu8oom;ha1o0;ach,nscript,ok;mpion,uffeur;o2u0;lly,tch0;er;ss;ddi1ffili0rchite1;ate;ct",MaleName:"true¦0:H6;1:FZ;2:DS;3:GQ;4:CZ;5:FV;6:GM;7:FP;8:GW;9:ET;A:C2;B:GD;aF8bE1cCQdBMeASfA1g8Yh88i7Uj6Sk6Bl5Mm48n3So3Ip33qu31r26s1Et0Ru0Ov0CwTxSyHzC;aCor0;cChC1karia,nAT;!hDkC;!aF6;!ar7CeF5;aJevgenBSoEuC;en,rFVsCu3FvEF;if,uf;nDs6OusC;ouf,s6N;aCg;s,tC;an,h0;hli,nCrosE1ss09;is,nC;!iBU;avi2ho5;aPeNiDoCyaEL;jcieBJlfgang,odrFutR;lFnC;f8TsC;lCt1;ow;bGey,frEhe4QlC;aE5iCy;am,e,s;ed8iC;d,ed;eAur;i,ndeD2rn2sC;!l9t1;lDyC;l1ne;lDtC;!er;aCHy;aKernDAiFladDoC;jteB0lodymyr;!iC;mFQsDB;cFha0ktBZnceDrgCOvC;a0ek;!nC;t,zo;!e4StBV;lCnC7sily;!entC;in9J;ghE2lCm70nax,ri,sm0;riCyss87;ch,k;aWeRhNiLoGrEuDyC;!l2roEDs1;n6r6E;avD0eCist0oy,um0;ntCRvBKy;bFdAWmCny;!asDmCoharu;aFFie,y;!z;iA6y;mCt4;!my,othy;adEeoDia0SomC;!as;!dor91;!de4;dFrC;enBKrC;anBJeCy;ll,nBI;!dy;dgh,ha,iCnn2req,tsu5V;cDAka;aYcotWeThPiMlobod0oKpenc2tEurDvenAEyCzym1;ed,lvest2;aj,e9V;anFeDuC;!aA;fan17phEQvCwaA;e77ie;!islaCl9;v,w;lom1rBuC;leymaDHta;dDgmu9UlCm1yabonga;as,v8B;!dhart8Yn9;aEeClo75;lCrm0;d1t1;h9Jne,qu1Jun,wn,yne;aDbastiEDk2Yl5Mpp,rgCth,ymoCU;e1Dio;m4n;!tC;!ie,y;eDPlFmEnCq67tosCMul;dCj2UtiA5;e01ro;!iATkeB6mC4u5;!ik,vato9K;aZeUheC8iRoGuDyC;an,ou;b99dDf4peAssC;!elEG;ol00y;an,bLc7MdJel,geIh0lHmGnEry,sDyC;!ce;ar7Ocoe,s;!aCnBU;ld,n;an,eo;a7Ef;l7Jr;e3Eg2n9olfo,riC;go;bBNeDH;cCl9;ar87c86h54kCo;!ey,ie,y;cFeA3gDid,ubByCza;an8Ln06;g85iC;naC6s;ep;ch8Kfa5hHin2je8HlGmFndEoHpha5sDul,wi36yC;an,mo8O;h9Im4;alDSol3O;iD0on;f,ph;ul;e9CinC;cy,t1;aOeLhilJiFrCyoG;aDeC;m,st1;ka85v2O;eDoC;tr;r8GtC;er,ro;!ipCl6H;!p6U;dCLrcy,tC;ar,e9JrC;!o7;b9Udra8So9UscAHtri62ulCv8I;!ie,o7;ctav6Ji2lImHndrBRrGsDtCum6wB;is,to;aDc6k6m0vCwaBE;al79;ma;i,vR;ar,er;aDeksandr,ivC;er,i2;f,v;aNeLguyBiFoCu3O;aDel,j4l0ma0rC;beAm0;h,m;cFels,g5i9EkDlC;es,s;!au,h96l78olaC;!i,y;hCkCol76;ol75;al,d,il,ls1vC;ilAF;hom,tC;e,hC;anCy;!a5i5;aYeViLoGuDyC;l4Nr1;hamDr84staC;fa,p6E;ed,mG;di10e,hamEis4JntDritz,sCussa;es,he;e,y;ad,ed,mC;ad,ed;cGgu5hai,kFlEnDtchC;!e8O;a9Pik;house,o7t1;ae73eC3ha8Iolaj;ah,hDkC;!ey,y;aDeC;al,l;el,l;hDlv3rC;le,ri8Ev4T;di,met;ay0c00gn4hWjd,ks2NlTmadZnSrKsXtDuric7VxC;imilBKwe8B;eHhEi69tCus,y69;!eo,hCia7;ew,i67;eDiC;as,eu,s;us,w;j,o;cHiGkFlEqu8Qsha83tCv3;iCy;!m,n;in,on;el,o7us;a6Yo7us;!elCin,o7us;!l8o;frAEi5Zny,u5;achDcoCik;lm;ai,y;amDdi,e5VmC;oud;adCm6W;ou;aulCi9P;ay;aWeOiMloyd,oJuDyC;le,nd1;cFdEiDkCth2uk;a7e;gi,s,z;ov7Cv6Hw6H;!as,iC;a6Een;g0nn52renDuCvA4we7D;!iS;!zo;am,n4oC;n5r;a9Yevi,la5KnHoFst2thaEvC;eCi;nte;bo;nCpo8V;!a82el,id;!nC;aAy;mEnd1rDsz73urenCwr6K;ce,t;ry,s;ar,beAont;aOeIhalHiFla4onr63rDu5SylC;e,s;istCzysztof;i0oph2;er0ngsl9p,rC;ilA9k,ollos;ed,id;en0iGnDrmCv4Z;it;!dDnCt1;e2Ny;ri4Z;r,th;cp2j4mEna8BrDsp6them,uC;ri;im,l;al,il;a03eXiVoFuC;an,lCst3;en,iC;an,en,o,us;aQeOhKkub4AnIrGsDzC;ef;eDhCi9Wue;!ua;!f,ph;dCge;i,on;!aCny;h,s,th6J;anDnC;!ath6Hie,n72;!nC;!es;!l,sCy;ph;o,qu3;an,mC;!i,m6V;d,ffFns,rCs4;a7JemDmai7QoCry;me,ni1H;i9Dy;!e73rC;ey,y;cKdBkImHrEsDvi2yC;dBs1;on,p2;ed,oDrCv67;e6Qod;d,s61;al,es5Wis1;a,e,oCub;b,v;ob,qu13;aTbNchiMgLke53lija,nuKonut,rIsEtCv0;ai,suC;ki;aDha0i8XmaCsac;el,il;ac,iaC;h,s;a,vinCw3;!g;k,nngu6X;nac1Xor;ka;ai,rahC;im;aReLoIuCyd6;beAgGmFsC;eyDsC;a3e3;in,n;ber5W;h,o;m2raDsse3wC;a5Pie;c49t1K;a0Qct3XiGnDrC;beAman08;dr7VrC;iCy2N;!k,q1R;n0Tt3S;bKlJmza,nIo,rEsDyC;a5KdB;an,s0;lEo67r2IuCv9;hi5Hki,tC;a,o;an,ey;k,s;!im;ib;a08e00iUlenToQrMuCyorgy;iHnFsC;!taC;f,vC;!e,o;n6tC;er,h2;do,lC;herDlC;auCerQ;me;aEegCov2;!g,orC;!io,y;dy,h7C;dfr9nza3XrDttfC;ri6C;an,d47;!n;acoGlEno,oCuseppe;rgiCvan6O;!o,s;be6Ies,lC;es;mo;oFrC;aDha4HrCt;it,y;ld,rd8;ffErgC;!e7iCy;!os;!r9;bElBrCv3;eCla1Nr4Hth,y;th;e,rC;e3YielC;!i4;aXeSiQlOorrest,rCyod2E;aHedFiC;edDtC;s,z;ri18;!d42eri11riC;ck,k;nCs2;cEkC;ie,lC;in,yn;esLisC;!co,z3M;etch2oC;ri0yd;d5lConn;ip;deriFliEng,rC;dinaCg4nan0B;nd8;pe,x;co;bCdi,hd;iEriC;ce,zC;io;an,en,o;benez2dZfrYit0lTmMnJo3rFsteb0th0ugenEvCymBzra;an,eCge4D;ns,re3K;!e;gi,iDnCrol,v3w3;est8ie,st;cCk;!h,k;o0DriCzo;co,qC;ue;aHerGiDmC;aGe3A;lCrh0;!iC;a10o,s;s1y;nu5;beAd1iEliDm2t1viCwood;n,s;ot28s;!as,j5Hot,sC;ha;a3en;!dGg6mFoDua2QwC;a2Pin;arC;do;oZuZ;ie;a04eTiOmitrNoFrag0uEwDylC;an,l0;ay3Hig4D;a3Gdl9nc0st3;minFnDri0ugCvydGy2S;!lF;!a36nCov0;e1Eie,y;go,iDykC;as;cCk;!k;i,y;armuFetDll1mitri7neCon,rk;sh;er,m6riC;ch;id;andLepak,j0lbeAmetri4nIon,rGsEvDwCxt2;ay30ey;en,in;hawn,moC;nd;ek,riC;ck;is,nC;is,y;rt;re;an,le,mKnIrEvC;e,iC;!d;en,iEne0PrCyl;eCin,yl;l45n;n,o,us;!iCny;el,lo;iCon;an,en,on;a0Fe0Ch03iar0lRoJrFuDyrC;il,us;rtC;!is;aEistC;iaCob12;no;ig;dy,lInErC;ey,neliCy;s,us;nEor,rDstaC;nt3;ad;or;by,e,in,l3t1;aHeEiCyde;fCnt,ve;fo0Xt1;menDt4;us;s,t;rFuDyC;!t1;dCs;e,io;enC;ce;aHeGrisC;!toC;phCs;!eC;!r;st2t;d,rCs;b5leC;s,y;cDdrCs6;ic;il;lHmFrC;ey,lDroCy;ll;!o7t1;er1iC;lo;!eb,v3;a09eZiVjorn,laUoSrEuCyr1;ddy,rtKst2;er;aKeFiEuDyC;an,ce,on;ce,no;an,ce;nDtC;!t;dDtC;!on;an,on;dFnC;dDisC;lav;en,on;!foOl9y;bby,gd0rCyd;is;i0Lke;bElDshC;al;al,lL;ek;nIrCshoi;at,nEtC;!raC;m,nd;aDhaCie;rd;rd8;!iDjam3nCs1;ie,y;to;kaMlazs,nHrC;n9rDtC;!holomew;eCy;tt;ey;dCeD;ar,iC;le;ar1Nb1Dd16fon15gust3hm12i0Zja0Yl0Bm07nTputsiSrGsaFugustEveDyCziz;a0kh0;ry;o,us;hi;aMchiKiJjun,mHnEon,tCy0;em,hCie,ur8;ur;aDoC;!ld;ud,v;aCin;an,nd8;!el,ki;baCe;ld;ta;aq;aMdHgel8tCw6;hoFoC;iDnC;!i8y;ne;ny;er7rCy;eDzC;ej;!as,i,j,s,w;!s;s,tolC;iCy;!y;ar,iEmaCos;nu5r;el;ne,r,t;aVbSdBeJfHiGl01onFphonsEt1vC;aPin;on;e,o;so,zo;!sR;!onZrC;ed;c,jaHksFssaHxC;!andC;er,rC;e,os,u;andCei;ar,er,r;ndC;ro;en;eDrecC;ht;rt8;dd3in,n,sC;taC;ir;ni;dDm6;ar;an,en;ad,eC;d,t;in;so;aGi,olErDvC;ik;ian8;f8ph;!o;mCn;!a;dGeFraDuC;!bakr,lfazl;hCm;am;!l;allFel,oulaye,ulC;!lDrahm0;an;ah,o;ah;av,on",Uncountable:"true¦0:2E;1:2L;2:33;a2Ub2Lc29d22e1Rf1Ng1Eh16i11j0Yk0Wl0Rm0Hn0Do0Cp03rZsLt9uran2Jv7w3you gu0E;a5his17i4oo3;d,l;ldlife,ne;rm8t1;apor,ernacul29i3;neg28ol1Otae;eDhBiAo8r4un3yranny;a,gst1B;aff2Oea1Ko4ue nor3;th;o08u3;bleshoot2Ose1Tt;night,othpas1Vwn3;foEsfoE;me off,n;er3und1;e,mod2S;a,nnis;aDcCeBhAi9ki8o7p6t4u3weepstak0;g1Unshi2Hshi;ati08e3;am,el;ace2Keci0;ap,cc1meth2C;n,ttl0;lk;eep,ingl0or1C;lf,na1Gri0;ene1Kisso1C;d0Wfe2l4nd,t3;i0Iurn;m1Ut;abi0e4ic3;e,ke15;c3i01laxa11search;ogni10rea10;a9e8hys7luto,o5re3ut2;amble,mis0s3ten20;en1Zs0L;l3rk;i28l0EyH; 16i28;a24tr0F;nt3ti0M;i0s;bstetri24vercrowd1Qxyg09;a5e4owada3utella;ys;ptu1Ows;il poliZtional securi2;aAe8o5u3;m3s1H;ps;n3o1K;ey,o3;gamy;a3cha0Elancholy,rchandi1Htallurgy;sl0t;chine3g1Aj1Hrs,thema1Q; learn1Cry;aught1e6i5ogi4u3;ck,g12;c,s1M;ce,ghtn18nguis1LteratWv1;ath1isVss;ara0EindergartPn3;icke0Aowled0Y;e3upit1;a3llyfiGwel0G;ns;ce,gnor6mp5n3;forma00ter3;net,sta07;atiSort3rov;an18;a7e6isto09o3ung1;ckey,mework,ne4o3rseradi8spitali2use arrest;ky;s2y;adquarteXre;ir,libut,ppiHs3;hi3te;sh;ene8l6o5r3um,ymnas11;a3eZ;niUss;lf,re;ut3yce0F;en; 3ti0W;edit0Hpo3;ol;aNicFlour,o4urnit3;ure;od,rgive3uri1wl;ness;arCcono0LducaBlectr9n7quip8thi0Pvery6x3;ist4per3;ti0B;en0J;body,o08th07;joy3tertain3;ment;ici2o3;ni0H;tiS;nings,th;emi02i6o4raugh3ynas2;ts;pe,wnstai3;rs;abet0ce,s3;honZrepu3;te;aDelciChAivi07l8o3urrency;al,ld w6mmenta5n3ral,ttIuscoB;fusiHt 3;ed;ry;ar;assi01oth0;es;aos,e3;eMwK;us;d,rO;a8i6lood,owlHread5u3;ntGtt1;er;!th;lliarJs3;on;g3ss;ga3;ge;cKdviJeroGirFmBn6ppeal court,r4spi3thleL;rin;ithmet3sen3;ic;i6y3;o4th3;ing;ne;se;en5n3;es2;ty;ds;craft;bi8d3nau7;yna3;mi6;ce;id,ous3;ti3;cs",Infinitive:"true¦0:9G;1:9T;2:AD;3:90;4:9Z;5:84;6:AH;7:A9;8:92;9:A0;A:AG;B:AI;C:9V;D:8R;E:8O;F:97;G:6H;H:7D;a94b8Hc7Jd68e4Zf4Mg4Gh4Ai3Qj3Nk3Kl3Bm34nou48o2Vp2Equ2Dr1Es0CtZuTvRwI;aOeNiLors5rI;eJiI;ng,te;ak,st3;d5e8TthI;draw,er;a2d,ep;i2ke,nIrn;d1t;aIie;liADniAry;nJpI;ho8Llift;cov1dJear8Hfound8DlIplug,rav82tie,ve94;eaAo3X;erIo;cut,go,staAFvalA3w2G;aSeQhNoMrIu73;aIe72;ffi3Smp3nsI;aBfo7CpI;i8oD;pp3ugh5;aJiJrIwaD;eat5i2;nk;aImA0;ch,se;ck3ilor,keImp1r8L;! paD;a0Ic0He0Fh0Bi0Al08mugg3n07o05p02qu01tUuLwI;aJeeIim;p,t5;ll7Wy;bNccMffLggeCmmKppJrI;mouFpa6Zvi2;o0re6Y;ari0on;er,i4;e7Numb;li9KmJsiIveD;de,st;er9it;aMe8MiKrI;ang3eIi2;ng27w;fIng;f5le;b,gg1rI;t3ve;a4AiA;a4UeJit,l7DoI;il,of;ak,nd;lIot7Kw;icEve;atGeak,i0O;aIi6;m,y;ft,ng,t;aKi6CoJriIun;nk,v6Q;ot,rt5;ke,rp5tt1;eIll,nd,que8Gv1w;!k,m;aven9ul8W;dd5tis1Iy;a0FeKiJoI;am,t,ut;d,p5;a0Ab08c06d05f01group,hea00iZjoi4lXmWnVpTq3MsOtMup,vI;amp,eJiIo3B;sEve;l,rI;e,t;i8rI;ie2ofE;eLiKpo8PtIurfa4;o24rI;aHiBuctu8;de,gn,st;mb3nt;el,hra0lIreseF;a4e71;d1ew,o07;aHe3Fo2;a7eFiIo6Jy;e2nq41ve;mbur0nf38;r0t;inKleBocus,rJuI;el,rbiA;aBeA;an4e;aBu4;ei2k8Bla43oIyc3;gni39nci3up,v1;oot,uI;ff;ct,d,liIp;se,ze;tt3viA;aAenGit,o7;aWerUinpoiFlumm1LoTrLuI;b47ke,niArIt;poDsuI;aFe;eMoI;cKd,fe4XhibEmo7noJpo0sp1tru6vI;e,i6o5L;un4;la3Nu8;aGclu6dJf1occupy,sup0JvI;a6BeF;etermi4TiB;aGllu7rtr5Ksse4Q;cei2fo4NiAmea7plex,sIva6;eve8iCua6;mp1rItrol,ve;a6It6E;bOccuNmEpMutLverIwe;l07sJtu6Yu0wI;helm;ee,h1F;gr5Cnu2Cpa4;era7i4Ipo0;py,r;ey,seItaH;r2ss;aMe0ViJoIultiply;leCu6Pw;micJnIspla4;ce,g3us;!k;iIke,na9;m,ntaH;aPeLiIo0u3N;ke,ng1quIv5;eIi6S;fy;aKnIss5;d,gI;th5;rn,ve;ng2Gu1N;eep,idnJnI;e4Cow;ap;oHuI;gg3xtaI;po0;gno8mVnIrk;cTdRfQgeChPitia7ju8q1CsNtKun6EvI;a6eIo11;nt,rt,st;erJimi6BoxiPrI;odu4u6;aBn,pr03ru6C;iCpi8tIu8;all,il,ruB;abEibE;eCo3Eu0;iIul9;ca7;i7lu6;b5Xmer0pI;aLer4Uin9ly,oJrI;e3Ais6Bo2;rt,se,veI;riA;le,rt;aLeKiIoiCuD;de,jaInd1;ck;ar,iT;mp1ng,pp5raIve;ng5Mss;ath1et,iMle27oLrI;aJeIow;et;b,pp3ze;!ve5A;gg3ve;aTer45i5RlSorMrJuI;lf4Cndrai0r48;eJiIolic;ght5;e0Qsh5;b3XeLfeEgJsI;a3Dee;eIi2;!t;clo0go,shIwa4Z;ad3F;att1ee,i36;lt1st5;a0OdEl0Mm0FnXquip,rWsVtGvTxI;aRcPeDhOiNpJtIu6;ing0Yol;eKi8lIo0un9;aHoI;it,re;ct,di7l;st,t;a3oDu3B;e30lI;a10u6;lt,mi28;alua7oI;ke,l2;chew,pou0tab19;a0u4U;aYcVdTfSgQhan4joy,lPqOrNsuMtKvI;e0YisI;a9i50;er,i4rI;aHenGuC;e,re;iGol0F;ui8;ar9iC;a9eIra2ulf;nd1;or4;ang1oIu8;r0w;irc3lo0ou0ErJuI;mb1;oaGy4D;b3ct;bKer9pI;hasiIow1;ze;aKody,rI;a4oiI;d1l;lm,rk;ap0eBuI;ci40de;rIt;ma0Rn;a0Re04iKo,rIwind3;aw,ed9oI;wn;agno0e,ff1g,mi2Kne,sLvI;eIul9;rIst;ge,t;aWbVcQlod9mant3pNru3TsMtI;iIoDu37;lJngI;uiA;!l;ol2ua6;eJlIo0ro2;a4ea0;n0r0;a2Xe36lKoIu0S;uIv1;ra9;aIo0;im;a3Kur0;b3rm;af5b01cVduBep5fUliTmQnOpMrLsiCtaGvI;eIol2;lop;ch;a20i2;aDiBloIoD;re,y;oIy;te,un4;eJoI;liA;an;mEv1;a4i0Ao06raud,y;ei2iMla8oKrI;ee,yI;!pt;de,mIup3;missi34po0;de,ma7ph1;aJrief,uI;g,nk;rk;mp5rk5uF;a0Dea0h0Ai09l08oKrIurta1G;a2ea7ipp3uI;mb3;ales4e04habEinci6ll03m00nIrro6;cXdUfQju8no7qu1sLtKvI;eIin4;ne,r9y;aHin2Bribu7;er2iLoli2Epi8tJuI;lt,me;itu7raH;in;d1st;eKiJoIroFu0;rm;de,gu8rm;ss;eJoI;ne;mn,n0;eIlu6ur;al,i2;buCe,men4pI;eIi3ly;l,te;eBi6u6;r4xiC;ean0iT;rcumveFte;eJirp,oI;o0p;riAw;ncIre5t1ulk;el;a02eSi6lQoPrKuI;iXrIy;st,y;aLeaKiJoad5;en;ng;stfeLtX;ke;il,l11mba0WrrMth1;eIow;ed;!coQfrie1LgPhMliLqueaKstJtrIwild1;ay;ow;th;e2tt3;a2eJoI;ld;ad;!in,ui3;me;bysEckfi8ff3tI;he;b15c0Rd0Iff0Ggree,l0Cm09n03ppZrXsQttOuMvJwaE;it;eDoI;id;rt;gIto0X;meF;aIeCraB;ch,in;pi8sJtoI;niA;aKeIi04u8;mb3rt,ss;le;il;re;g0Hi0ou0rI;an9i2;eaKly,oiFrI;ai0o2;nt;r,se;aMi0GnJtI;icipa7;eJoIul;un4y;al;ly0;aJu0;se;lga08ze;iKlI;e9oIu6;t,w;gn;ix,oI;rd;a03jNmiKoJsoI;rb;pt,rn;niIt;st1;er;ouJuC;st;rn;cLhie2knowled9quiItiva7;es4re;ce;ge;eQliOoKrJusI;e,tom;ue;mIst;moJpI;any,liA;da7;ma7;te;pt;andPduBet,i6oKsI;coKol2;ve;liArt,uI;nd;sh;de;ct;on",Person:"true¦0:1Q;a29b1Zc1Md1Ee18f15g13h0Ri0Qj0Nk0Jl0Gm09n06o05p00rPsItCusain bolt,v9w4xzibit,y1;anni,oko on2uji,v1;an,es;en,o;a3ednesday adams,i2o1;lfram,o0Q;ll ferrell,z khalifa;lt disn1Qr1;hol,r0G;a2i1oltai06;n dies0Zrginia wo17;lentino rossi,n goG;a4h3i2ripp,u1yra banks;lZpac shakur;ger woods,mba07;eresa may,or;kashi,t1ylor;um,ya1B;a5carlett johanss0h4i3lobodan milosevic,no2ocr1Lpider1uperm0Fwami; m0Em0E;op dogg,w whi1H;egfried,nbad;akespeaTerlock holm1Sia labeouf;ddam hussa16nt1;a cla11ig9;aAe6i5o3u1za;mi,n dmc,paul,sh limbau1;gh;bin hood,d stew16nald1thko;in0Mo;han0Yngo starr,valdo;ese witherspo0i1mbrandt;ll2nh1;old;ey,y;chmaninoff,ffi,iJshid,y roma1H;a4e3i2la16o1uff daddy;cahont0Ie;lar,p19;le,rZ;lm17ris hilt0;leg,prah winfr0Sra;a2e1iles cra1Bostradam0J; yo,l5tt06wmQ;pole0s;a5e4i2o1ubar03;by,lie5net,rriss0N;randa ju1tt romn0M;ly;rl0GssiaB;cklemo1rkov,s0ta hari,ya angelou;re;ady gaga,e1ibera0Pu;bron jam0Xch wale1e;sa;anye west,e3i1obe bryant;d cudi,efer suther1;la0P;ats,sha;a2effers0fk,k rowling,rr tolki1;en;ck the ripp0Mwaharlal nehru,y z;liTnez,ron m7;a7e5i3u1;lk hog5mphrey1sa01;! bog05;l1tl0H;de; m1dwig,nry 4;an;ile selassFlle ber4m3rrison1;! 1;ford;id,mo09;ry;ast0iannis,o1;odwPtye;ergus0lorence nightinga08r1;an1ederic chopN;s,z;ff5m2nya,ustaXzeki1;el;eril lagasse,i1;le zatop1nem;ek;ie;a6e4i2octor w1rake;ho;ck w1ego maradoC;olf;g1mi lovaOnzel washingt0;as;l1nHrth vadR;ai lNt0;a8h5lint0o1thulhu;n1olio;an,fuci1;us;on;aucKop2ristian baMy1;na;in;millo,ptain beefhe4r1;dinal wols2son1;! palmF;ey;art;a8e5hatt,i3oHro1;ck,n1;te;ll g1ng crosby;atB;ck,nazir bhut2rtil,yon1;ce;to;nksy,rack ob1;ama;l 6r3shton kutch2vril lavig8yn ra1;nd;er;chimed2istot1;le;es;capo2paci1;no;ne",Adjective:"true¦0:AI;1:BS;2:BI;3:BA;4:A8;5:84;6:AV;7:AN;8:AF;9:7H;A:BQ;B:AY;C:BC;D:BH;E:9Y;aA2b9Ec8Fd7We79f6Ng6Eh61i4Xj4Wk4Tl4Im41n3Po36p2Oquart7Pr2Ds1Dt14uSvOwFye29;aMeKhIiHoF;man5oFrth7G;dADzy;despreB1n w97s86;acked1UoleF;!sa6;ather1PeFll o70ste1D;!k5;nt1Ist6Ate4;aHeGiFola5T;bBUce versa,gi3Lle;ng67rsa5R;ca1gBSluAV;lt0PnLpHrGsFttermoBL;ef9Ku3;b96ge1; Hb32pGsFtiAH;ca6ide d4R;er,i85;f52to da2;a0Fbeco0Hc0Bd04e02f01gu1XheaBGiXkn4OmUnTopp06pRrNsJtHus0wF;aFiel3K;nt0rra0P;app0eXoF;ld,uS;eHi37o5ApGuF;perv06spec39;e1ok9O;en,ttl0;eFu5;cogn06gul2RlGqu84sF;erv0olv0;at0en33;aFrecede0E;id,rallel0;am0otic0;aFet;rri0tF;ch0;nFq26vers3;sur0terFv7U;eFrupt0;st0;air,inish0orese98;mploy0n7Ov97xpF;ect0lain0;eHisFocume01ue;clFput0;os0;cid0rF;!a8Scov9ha8Jlyi8nea8Gprivileg0sMwF;aFei9I;t9y;hGircumcFonvin2U;is0;aFeck0;lleng0rt0;b20ppea85ssuGttend0uthorF;iz0;mi8;i4Ara;aLeIhoHip 25oGrF;anspare1encha1i2;geth9leADp notch,rpB;rny,ugh6H;ena8DmpGrFs6U;r49tia4;eCo8P;leFst4M;nt0;a0Dc09e07h06i04ki03l01mug,nobbi4XoVpRqueami4XtKuFymb94;bHccinAi generis,pFr5;erFre7N;! dup9b,vi70;du0li7Lp6IsFurb7J;eq9Atanda9X;aKeJi16o2QrGubboFy4Q;rn;aightFin5GungS; fFfF;or7V;adfa9Pri6;lwa6Ftu82;arHeGir6NlendBot Fry;on;c3Qe1S;k5se; call0lImb9phistic16rHuFviV;ndFth1B;proof;dBry;dFub6; o2A;e60ipF;pe4shod;ll0n d7R;g2HnF;ceEg6ist9;am3Se9;co1Zem5lfFn6Are7; suf4Xi43;aGholFient3A;ar5;rlFt4A;et;cr0me,tisfac7F;aOeIheumatoBiGoF;bu8Ztt7Gy3;ghtFv3; 1Sf6X;cJdu8PlInown0pro69sGtF;ard0;is47oF;lu2na1;e1Suc45;alcit8Xe1ondi2;bBci3mpa1;aSePicayu7laOoNrGuF;bl7Tnjabi;eKiIoF;b7VfGmi49pFxi2M;er,ort81;a7uD;maFor,sti7va2;!ry;ciDexis0Ima2CpaB;in55puli8G;cBid;ac2Ynt 3IrFti2;ma40tFv7W;!i3Z;i2YrFss7R;anoBtF; 5XiF;al,s5V;bSffQkPld OnMrLth9utKverF;!aIbMdHhGni75seas,t,wF;ei74rou74;a63e7A;ue;ll;do1Ger,si6A;d3Qg2Aotu5Z; bFbFe on o7g3Uli7;oa80;fashion0school;!ay; gua7XbFha5Uli7;eat;eHligGsF;ce7er0So1C;at0;diFse;a1e1;aOeNiMoGuF;anc0de; moEnHrthFt6V;!eFwe7L;a7Krn;chaGdescri7Iprof30sF;top;la1;ght5;arby,cessa4ighbor5wlyw0xt;k0usiaFv3;ti8;aQeNiLoHuF;dIltiF;facet0p6;deHlGnFot,rbBst;ochro4Xth5;dy;rn,st;ddle ag0nF;dbloZi,or;ag9diocEga,naGrFtropolit4Q;e,ry;ci8;cIgenta,inHj0Fkeshift,mmGnFri4Oscu61ver18;da5Dy;ali4Lo4U;!stream;abEho;aOeLiIoFumberi8;ngFuti1R;stan3RtF;erm,i4H;ghtGteraF;l,ry,te;heart0wei5O;ft JgFss9th3;al,eFi0M;nda4;nguBps0te5;apGind5noF;wi8;ut;ad0itte4uniW;ce co0Hgno6Mll0Cm04nHpso 2UrF;a2releF;va1; ZaYcoWdReQfOgrNhibi4Ri05nMoLsHtFvalu5M;aAeF;nDrdepe2K;a7iGolFuboI;ub6ve1;de,gF;nifica1;rdi5N;a2er;own;eriIiLluenVrF;ar0eq5H;pt,rt;eHiGoFul1O;or;e,reA;fiFpe26termi5E;ni2;mpFnsideCrreA;le2;ccuCdeq5Ene,ppr4J;fFsitu,vitro;ro1;mJpF;arHeGl15oFrop9;li2r11;n2LrfeA;ti3;aGeFi18;d4BnD;tuE;egGiF;c0YteC;al,iF;tiF;ma2;ld;aOelNiLoFuma7;a4meInHrrGsFur5;ti6;if4E;e58o3U; ma3GsF;ick;ghfalut2HspF;an49;li00pf33;i4llow0ndGrdFtM; 05coEworki8;sy,y;aLener44iga3Blob3oKrGuF;il1Nng ho;aFea1Fizzl0;cGtF;ef2Vis;ef2U;ld3Aod;iFuc2D;nf2R;aVeSiQlOoJrF;aGeFil5ug3;q43tf2O;gFnt3S;i6ra1;lk13oHrF; keeps,eFge0Vm9tu41;g0Ei2Ds3R;liF;sh;ag4Mowe4uF;e1or45;e4nF;al,i2;d Gmini7rF;ti6ve1;up;bl0lDmIr Fst pac0ux;oGreacF;hi8;ff;ed,ili0R;aXfVlTmQnOqu3rMthere3veryday,xF;aApIquisi2traHuF;be48lF;ta1;!va2L;edRlF;icF;it;eAstF;whi6; Famor0ough,tiE;rou2sui2;erGiF;ne1;ge1;dFe2Aoq34;er5;ficF;ie1;g9sF;t,ygF;oi8;er;aWeMiHoGrFue;ea4owY;ci6mina1ne,r31ti8ubQ;dact2Jfficult,m,sGverF;ge1se;creGePjoi1paCtF;a1inA;et,te; Nadp0WceMfiLgeneCliJmuEpeIreliAsGvoF;id,ut;pFtitu2ul1L;eCoF;nde1;ca2ghF;tf13;a1ni2;as0;facto;i5ngero0I;ar0Ce09h07i06l05oOrIuF;rmudgeon5stoma4teF;sy;ly;aIeHu1EystalF; cleFli7;ar;epy;fFv17z0;ty;erUgTloSmPnGrpoCunterclVveFy;rt;cLdJgr21jIsHtrF;aFi2;dic0Yry;eq1Yta1;oi1ug3;escenFuN;di8;a1QeFiD;it0;atoDmensuCpF;ass1SulF;so4;ni3ss3;e1niza1;ci1J;ockwiD;rcumspeAvil;eFintzy;e4wy;leGrtaF;in;ba2;diac,ef00;a00ePiLliJoGrFuck nak0;and new,isk,on22;gGldface,naF; fi05fi05;us;nd,tF;he;gGpartisFzarE;an;tiF;me;autifOhiNlLnHsFyoN;iWtselF;li8;eGiFt;gn;aFfi03;th;at0oF;v0w;nd;ul;ckwards,rF;e,rT; priori,b13c0Zd0Tf0Ng0Ihe0Hl09mp6nt06pZrTsQttracti0MuLvIwF;aGkF;wa1B;ke,re;ant garGeraF;ge;de;diIsteEtF;heFoimmu7;nt07;re;to4;hGlFtu2;eep;en;bitIchiv3roHtF;ifiFsy;ci3;ga1;ra4;ry;pFt;aHetizi8rF;oprF;ia2;llFre1;ed,i8;ng;iquFsy;at0e;ed;cohKiJkaHl,oGriFterX;ght;ne,of;li7;ne;ke,ve;olF;ic;ad;ain07gressiIi6rF;eeF;ab6;le;ve;fGraB;id;ectGlF;ue1;ioF;na2; JaIeGvF;erD;pt,qF;ua2;ma1;hoc,infinitum;cuCquiGtu3u2;al;esce1;ra2;erSjeAlPoNrKsGuF;nda1;e1olu2trF;aAuD;se;te;eaGuF;pt;st;aFve;rd;aFe;ze;ct;ra1;nt",Pronoun:"true¦elle,h3i2me,she,th0us,we,you;e0ou;e,m,y;!l,t;e,im",Preposition:"true¦aPbMcLdKexcept,fIinGmid,notwithstandiWoDpXqua,sCt7u4v2w0;/o,hereSith0;! whHin,oW;ersus,i0;a,s a vis;n1p0;!on;like,til;h1ill,oward0;!s;an,ereby,r0;ough0u;!oM;ans,ince,o that,uch G;f1n0ut;!to;!f;! 0to;effect,part;or,r0;om;espite,own,u3;hez,irca;ar1e0oBy;sides,tween;ri7;bo8cross,ft7lo6m4propos,round,s1t0;!op;! 0;a whole,long 0;as;id0ong0;!st;ng;er;ut",SportsTeam:"true¦0:18;1:1E;2:1D;3:14;a1Db15c0Sd0Kfc dallas,g0Ihouston 0Hindiana0Gjacksonville jagua0k0El0Am01new UoRpKqueens parkJreal salt lake,sBt6utah jazz,vancouver whitecaps,w4yW;ashington 4h10;natio1Mredski2wizar0W;ampa bay 7e6o4;ronto 4ttenham hotspur;blue ja0Mrapto0;nnessee tita2xasD;buccanee0ra0K;a8eattle 6porting kansas0Wt4; louis 4oke0V;c1Drams;marine0s4;eah13ounH;cramento Rn 4;antonio spu0diego 4francisco gJjose earthquak1;char08paB; ran07;a9h6ittsburgh 5ortland t4;imbe0rail blaze0;pirat1steele0;il4oenix su2;adelphia 4li1;eagl1philNunE;dr1;akland 4klahoma city thunder,rlando magic;athle0Lrai4;de0;england 8orleans 7york 4;g5je3knYme3red bul0Xy4;anke1;ian3;pelica2sain3;patrio3revolut4;ion;anchEeAi4ontreal impact;ami 8lwaukee b7nnesota 4;t5vi4;kings;imberwolv1wi2;rewe0uc0J;dolphi2heat,marli2;mphis grizz4ts;li1;a6eic5os angeles 4;clippe0dodFlaB;esterV; galaxy,ke0;ansas city 4nF;chiefs,roya0D; pace0polis col3;astr05dynamo,rocke3texa2;olden state warrio0reen bay pac4;ke0;allas 8e4i04od6;nver 6troit 4;lio2pisto2ti4;ge0;broncYnugge3;cowbo5maver4;icZ;ys;arEelLhAincinnati 8leveland 6ol4;orado r4umbus crew sc;api7ocki1;brow2cavalie0guar4in4;dia2;bengaVre4;ds;arlotte horAicago 4;b5cubs,fire,wh4;iteB;ea0ulQ;diff4olina panthe0; city;altimore Alackburn rove0oston 6rooklyn 4uffalo bilN;ne3;ts;cel5red4; sox;tics;rs;oriol1rave2;rizona Ast8tlanta 4;brav1falco2h4;awA;ns;es;on villa,r4;os;c6di4;amondbac4;ks;ardi4;na4;ls",Unit:"true¦a07b04cXdWexVfTgRhePinYjoule0BkMlJmDnan08oCp9quart0Bsq ft,t7volts,w6y2ze3°1µ0;g,s;c,f,n;dVear1o0;ttR; 0s 0;old;att,b;erNon0;!ne02;ascals,e1i0;cXnt00;rcent,tJ;hms,unceY;/s,e4i0m²,²,³;/h,cro2l0;e0liK;!²;grLsR;gCtJ;it1u0;menQx;erPreP;b5elvins,ilo1m0notO;/h,ph,²;!byGgrEmCs;ct0rtzL;aJogrC;allonJb0ig3rB;ps;a0emtEl oz,t4;hrenheit,radG;aby9;eci3m1;aratDe1m0oulombD;²,³;lsius,nti0;gr2lit1m0;et0;er8;am7;b1y0;te5;l,ps;c2tt0;os0;econd1;re0;!s","Noun|Gerund":"true¦0:3O;1:3M;2:3N;3:3D;4:32;5:2V;6:3E;7:3K;8:36;9:3J;A:3B;a3Pb37c2Jd27e23f1Vg1Sh1Mi1Ij1Gk1Dl18m13n11o0Wp0Pques0Sr0EsTtNunderMvKwFyDzB;eroi0oB;ni0o3P;aw2eB;ar2l3;aEed4hispe5i5oCrB;ap8est3i1;n0ErB;ki0r31;i1r2s9tc9;isualizi0oB;lunt1Vti0;stan4ta6;aFeDhin6iCraBy8;c6di0i2vel1M;mi0p8;aBs1;c9si0;l6n2s1;aUcReQhOiMkatKl2Wmo6nowJpeItFuCwB;ea5im37;b35f0FrB;fi0vB;e2Mi2J;aAoryt1KrCuB;d2KfS;etc9ugg3;l3n4;bCi0;ebBi0;oar4;gnBnAt1;a3i0;ip8oB;p8rte2u1;a1r27t1;hCo5reBulp1;a2Qe2;edu3oo3;i3yi0;aKeEi4oCuB;li0n2;oBwi0;fi0;aFcEhear7laxi0nDpor1sB;pon4tructB;r2Iu5;de5;or4yc3;di0so2;p8ti0;aFeacek20laEoCrBublis9;a1Teten4in1oces7;iso2siB;tio2;n2yi0;ckaAin1rB;ki0t1O;fEpeDrganiCvB;erco24ula1;si0zi0;ni0ra1;fe5;avi0QeBur7;gotia1twor6;aDeCi2oB;de3nito5;a2dita1e1ssaA;int0XnBrke1;ifUufactu5;aEeaDiBodAyi0;cen7f1mi1stB;e2i0;r2si0;n4ug9;iCnB;ea4it1;c6l3;ogAuB;dAgg3stif12;ci0llust0VmDnBro2;nova1sp0NterBven1;ac1vie02;agi2plo4;aDea1iCoBun1;l4w3;ki0ri0;nd3rB;roWvB;es1;aCene0Lli4rBui4;ee1ie0N;rde2the5;aHeGiDlCorBros1un4;e0Pmat1;ir1oo4;gh1lCnBs9;anZdi0;i0li0;e3nX;r0Zscina1;a1du01nCxB;erci7plo5;chan1di0ginB;ee5;aLeHiGoub1rCum8wB;el3;aDeCiB;bb3n6vi0;a0Qs7;wi0;rTscoDvi0;ba1coZlBvelo8;eCiB;ve5;ga1;nGti0;aVelebUhSlPoDrBur3yc3;aBos7yi0;f1w3;aLdi0lJmFnBo6pi0ve5;dDsCvinB;ci0;trBul1;uc1;muniDpB;lBo7;ai2;ca1;lBo5;ec1;c9ti0;ap8eaCimToBubT;ni0t9;ni0ri0;aBee5;n1t1;ra1;m8rCs1te5;ri0;vi0;aPeNitMlLoGrDuB;dge1il4llBr8;yi0;an4eat9oadB;cas1;di0;a1mEokB;i0kB;ee8;pi0;bi0;es7oa1;c9i0;gin2lonAt1;gi0;bysit1c6ki0tt3;li0;ki0;bando2cGdverti7gi0pproac9rgDssuCtB;trac1;mi0;ui0;hi0;si0;coun1ti0;ti0;ni0;ng",PhrasalVerb:"true¦0:92;1:96;2:8H;3:8V;4:8A;5:83;6:85;7:98;8:90;9:8G;A:8X;B:8R;C:8U;D:8S;E:70;F:97;G:8Y;H:81;I:7H;J:79;a9Fb7Uc6Rd6Le6Jf5Ig50h4Biron0j47k40l3Em31n2Yo2Wp2Cquiet Hr1Xs0KtZuXvacuu6QwNyammerBzK;ero Dip LonK;e0k0;by,ov9up;aQeMhLiKor0Mrit19;mp0n3Fpe0r5s5;ackAeel Di0S;aLiKn33;gh 3Wrd0;n Dr K;do1in,oJ;it 79k5lk Lrm 69sh Kt83v60;aw3do1o7up;aw3in,oC;rgeBsK;e 2herE;a00eYhViRoQrMuKypP;ckErn K;do1in,oJup;aLiKot0y 30;ckl7Zp F;ck HdK;e 5Y;n7Wp 3Es5K;ck MdLe Kghten 6me0p o0Rre0;aw3ba4do1in,up;e Iy 2;by,oG;ink Lrow K;aw3ba4in,up;ba4ov9up;aKe 77ll62;m 2r 5M;ckBke Llk K;ov9shit,u47;aKba4do1in,leave,o4Dup;ba4ft9pa69w3;a0Vc0Te0Mh0Ii0Fl09m08n07o06p01quar5GtQuOwK;earMiK;ngLtch K;aw3ba4o8K; by;cKi6Bm 2ss0;k 64;aReQiPoNrKud35;aigh2Det75iK;ke 7Sng K;al6Yup;p Krm2F;by,in,oG;c3Ln3Lr 2tc4O;p F;c3Jmp0nd LrKveAy 2O;e Ht 2L;ba4do1up;ar3GeNiMlLrKurB;ead0ingBuc5;a49it 6H;c5ll o3Cn 2;ak Fe1Xll0;a3Bber 2rt0und like;ap 5Vow Duggl5;ash 6Noke0;eep NiKow 6;cLp K;o6Dup;e 68;in,oK;ff,v9;de19gn 4NnKt 6Gz5;gKkE; al6Ale0;aMoKu5W;ot Kut0w 7M;aw3ba4f48oC;c2WdeEk6EveA;e Pll1Nnd Orv5tK; Ktl5J;do1foLin,o7upK;!on;ot,r5Z;aw3ba4do1in,o33up;oCto;al66out0rK;ap65ew 6J;ilAv5;aXeUiSoOuK;b 5Yle0n Kstl5;aLba4do1inKo2Ith4Nu5P;!to;c2Xr8w3;ll Mot LpeAuK;g3Ind17;a2Wf3Po7;ar8in,o7up;ng 68p oKs5;ff,p18;aKelAinEnt0;c6Hd K;o4Dup;c27t0;aZeYiWlToQrOsyc35uK;ll Mn5Kt K;aKba4do1in,oJto47up;pa4Dw3;a3Jdo1in,o21to45up;attleBess KiNop 2;ah2Fon;iLp Kr4Zu1Gwer 6N;do1in,o6Nup;nt0;aLuK;gEmp 6;ce u20y 6D;ck Kg0le 4An 6p5B;oJup;el 5NncilE;c53ir 39n0ss MtLy K;ba4oG; Hc2R;aw3ba4in,oJ;pKw4Y;e4Xt D;aLerd0oK;dAt53;il Hrrow H;aTeQiPoLuK;ddl5ll I;c1FnkeyMp 6uthAve K;aKdo1in,o4Lup;l4Nw3; wi4K;ss0x 2;asur5e3SlLss K;a21up;t 6;ke Ln 6rKs2Ax0;k 6ryA;do,fun,oCsure,up;a02eViQoLuK;ck0st I;aNc4Fg MoKse0;k Kse4D;aft9ba4do1forw37in56o0Zu46;in,oJ;d 6;e NghtMnLsKve 00;ten F;e 2k 2; 2e46;ar8do1in;aMt LvelK; oC;do1go,in,o7up;nEve K;in,oK;pKut;en;c5p 2sh LtchBughAy K;do1o59;in4Po7;eMick Lnock K;do1oCup;oCup;eLy K;in,up;l Ip K;aw3ba4do1f04in,oJto,up;aMoLuK;ic5mpE;ke3St H;c43zz 2;a01eWiToPuK;nLrrKsh 6;y 2;keLt K;ar8do1;r H;lKneErse3K;d Ke 2;ba4dKfast,o0Cup;ear,o1;de Lt K;ba4on,up;aw3o7;aKlp0;d Ml Ir Kt 2;fKof;rom;f11in,o03uW;cPm 2nLsh0ve Kz2P;at,it,to;d Lg KkerP;do1in,o2Tup;do1in,oK;ut,v9;k 2;aZeTive Rloss IoMrLunK; f0S;ab hold,in43ow 2U; Kof 2I;aMb1Mit,oLr8th1IuK;nd9;ff,n,v9;bo7ft9hQw3;aw3bKdo1in,oJrise,up,w3;a4ir2H;ar 6ek0t K;aLb1Fdo1in,oKr8up;ff,n,ut,v9;cLhKl2Fr8t,w3;ead;ross;d aKng 2;bo7;a0Ee07iYlUoQrMuK;ck Ke2N;ar8up;eLighten KownBy 2;aw3oG;eKshe27; 2z5;g 2lMol Krk I;aKwi20;bo7r8;d 6low 2;aLeKip0;sh0;g 6ke0mKrKtten H;e F;gRlPnNrLsKzzle0;h F;e Km 2;aw3ba4up;d0isK;h 2;e Kl 1T;aw3fPin,o7;ht ba4ure0;ePnLsK;s 2;cMd K;fKoG;or;e D;d04l 2;cNll Krm0t1G;aLbKdo1in,o09sho0Eth08victim;a4ehi2O;pa0C;e K;do1oGup;at Kdge0nd 12y5;in,o7up;aOi1HoNrK;aLess 6op KuN;aw3b03in,oC;gBwB; Ile0ubl1B;m 2;a0Ah05l02oOrLut K;aw3ba4do1oCup;ackBeep LoKy0;ss Dwd0;by,do1in,o0Uup;me NoLuntK; o2A;k 6l K;do1oG;aRbQforOin,oNtKu0O;hLoKrue;geth9;rough;ff,ut,v9;th,wK;ard;a4y;paKr8w3;rt;eaLose K;in,oCup;n 6r F;aNeLiK;ll0pE;ck Der Kw F;on,up;t 2;lRncel0rOsMtch LveE; in;o1Nup;h Dt K;doubt,oG;ry LvK;e 08;aw3oJ;l Km H;aLba4do1oJup;ff,n,ut;r8w3;a0Ve0MiteAl0Fo04rQuK;bblNckl05il0Dlk 6ndl05rLsKtMy FzzA;t 00;n 0HsK;t D;e I;ov9;anWeaUiLush K;oGup;ghQng K;aNba4do1forMin,oLuK;nd9p;n,ut;th;bo7lKr8w3;ong;teK;n 2;k K;do1in,o7up;ch0;arTg 6iRn5oPrNssMttlLunce Kx D;aw3ba4;e 6; ar8;e H;do1;k Dt 2;e 2;l 6;do1up;d 2;aPeed0oKurt0;cMw K;aw3ba4do1o7up;ck;k K;in,oC;ck0nk0stA; oQaNef 2lt0nd K;do1ov9up;er;up;r Lt K;do1in,oCup;do1o7;ff,nK;to;ck Pil0nMrgLsK;h D;ainBe D;g DkB; on;in,o7;aw3do1in,oCup;ff,ut;ay;ct FdQir0sk MuctionA; oG;ff;ar8o7;ouK;nd; o7;d K;do1oKup;ff,n;wn;o7up;ut",ProperNoun:"true¦aIbDc8dalhousHe7f5gosford,h4iron maiden,kirby,landsdowne,m2nis,r1s0wembF;herwood,paldiB;iel,othwe1;cgi0ercedes,issy;ll;intBudsB;airview,lorence,ra0;mpt9nco;lmo,uro;a1h0;arlt6es5risti;rl0talina;et4i0;ng;arb3e0;et1nt0rke0;ley;on;ie;bid,jax","Person|Place":"true¦a8d6h4jordan,k3orlando,s1vi0;ctor9rgin9;a0ydney;lvador,mara,ntia4;ent,obe;amil0ous0;ton;arw2ie0;go;lexandr1ust0;in;ia",LastName:"true¦0:BR;1:BF;2:B5;3:BH;4:AX;5:9Y;6:B6;7:BK;8:B0;9:AV;A:AL;B:8Q;C:8G;D:7K;E:BM;F:AH;aBDb9Zc8Wd88e81f7Kg6Wh64i60j5Lk4Vl4Dm39n2Wo2Op25quispe,r1Ls0Pt0Ev03wTxSyKzG;aIhGimmerm6A;aGou,u;ng,o;khar5ytsE;aKeun9BiHoGun;koya32shiBU;!lG;diGmaz;rim,z;maGng;da,g52mo83sGzaC;aChiBV;iao,u;aLeJiHoGright,u;jcA5lff,ng;lGmm0nkl0sniewsC;kiB1liams33s3;bGiss,lt0;b,er,st0;a6Vgn0lHtG;anabe,s3;k0sh,tG;e2Non;aLeKiHoGukD;gt,lk5roby5;dHllalGnogr3Kr1Css0val3S;ba,ob1W;al,ov4;lasHsel8W;lJn dIrgBEsHzG;qu7;ilyEqu7siljE;en b6Aijk,yk;enzueAIverde;aPeix1VhKi2j8ka43oJrIsui,uG;om5UrG;c2n0un1;an,emblA7ynisC;dorAMlst3Km4rrAth;atch0i8UoG;mHrG;are84laci79;ps3sG;en,on;hirDkah9Mnaka,te,varA;a06ch01eYhUiRmOoMtIuHvGzabo;en9Jobod3N;ar7bot4lliv2zuC;aIeHoG;i7Bj4AyanAB;ele,in2FpheBvens25;l8rm0;kol5lovy5re7Tsa,to,uG;ng,sa;iGy72;rn5tG;!h;l71mHnGrbu;at9cla9Egh;moBo7M;aIeGimizu;hu,vchG;en8Luk;la,r1G;gu9infe5YmGoh,pulveA7rra5P;jGyG;on5;evi6iltz,miHneid0roed0uGwarz;be3Elz;dHtG;!t,z;!t;ar4Th8ito,ka4OlJnGr4saCto,unde19v4;ch7dHtGz;a5Le,os;b53e16;as,ihDm4Po0Y;aVeSiPoJuHyG;a6oo,u;bio,iz,sG;so,u;bKc8Fdrigue67ge10j9YmJosevelt,sItHux,wG;e,li6;a9Ch;enb4Usi;a54e4L;erts15i93;bei4JcHes,vGzzo;as,e9;ci,hards12;ag2es,iHut0yG;es,nol5N;s,t0;dImHnGsmu97v6C;tan1;ir7os;ic,u;aUeOhMiJoHrGut8;asad,if6Zochazk27;lishc2GpGrti72u10we76;e3Aov51;cHe45nG;as,to;as70hl0;aGillips;k,m,n6I;a3Hde3Wete0Bna,rJtG;ersHrovGters54;!a,ic;!en,on;eGic,kiBss3;i9ra,tz,z;h86k,padopoulIrk0tHvG;ic,l4N;el,te39;os;bMconn2Ag2TlJnei6PrHsbor6XweBzG;dem7Rturk;ella4DtGwe6N;ega,iz;iGof7Hs8I;vGyn1R;ei9;aSri1;aPeNiJoGune50ym2;rHvGwak;ak4Qik5otn66;odahl,r4S;cholsZeHkolGls4Jx3;ic,ov84;ls1miG;!n1;ils3mG;co4Xec;gy,kaGray2sh,var38;jiGmu9shiG;ma;a07c04eZiWoMuHyeG;rs;lJnIrGssoli6S;atGp03r7C;i,ov4;oz,te58;d0l0;h2lOnNo0RrHsGza1A;er,s;aKeJiIoz5risHtG;e56on;!on;!n7K;au,i9no,t5J;!lA;r1Btgome59;i3El0;cracFhhail5kkeHlG;l0os64;ls1;hmeJiIj30lHn3Krci0ssiGyer2N;!er;n0Po;er,j0;dDti;cartHlG;aughl8e2;hy;dQe7Egnu68i0jer3TkPmNnMrItHyG;er,r;ei,ic,su21thews;iHkDquAroqu8tinG;ez,s;a5Xc,nG;!o;ci5Vn;a5UmG;ad5;ar5e6Kin1;rig77s1;aVeOiLoJuHyG;!nch;k4nGo;d,gu;mbarGpe3Fvr4we;di;!nGu,yana2B;coln,dG;b21holm,strom;bedEfeKhIitn0kaHn8rGw35;oy;!j;m11tG;in1on1;bvGvG;re;iGmmy,ng,rs2Qu,voie,ws3;ne,t1F;aZeYh2iWlUnez50oNrJuHvar2woG;k,n;cerGmar68znets5;a,o34;aHem0isGyeziu;h23t3O;m0sni4Fus3KvG;ch4O;bay57ch,rh0Usk16vaIwalGzl5;czGsC;yk;cIlG;!cGen4K;huk;!ev4ic,s;e8uiveG;rt;eff0kGl4mu9nnun1;ucF;ll0nnedy;hn,llKminsCne,pIrHstra3Qto,ur,yGzl5;a,s0;j0Rls22;l2oG;or;oe;aPenOha6im14oHuG;ng,r4;e32hInHrge32u6vG;anD;es,ss3;anHnsG;en,on,t3;nesGs1R;en,s1;kiBnings,s1;cJkob4EnGrv0E;kDsG;en,sG;en0Ion;ks3obs2A;brahimDglesi5Nke5Fl0Qno07oneIshikHto,vanoG;u,v54;awa;scu;aVeOiNjaltal8oIrist50uG;!aGb0ghAynh;m2ng;a6dz4fIjgaa3Hk,lHpUrGwe,x3X;ak1Gvat;mAt;er,fm3WmG;ann;ggiBtchcock;iJmingw4BnHrGss;nand7re9;deGriks1;rs3;kkiHnG;on1;la,n1;dz4g1lvoQmOns0ZqNrMsJuIwHyG;asFes;kiB;g1ng;anHhiG;mo14;i,ov0J;di6p0r10t;ue;alaG;in1;rs1;aVeorgUheorghe,iSjonRoLrJuGw3;errGnnar3Co,staf3Ctierr7zm2;a,eG;ro;ayli6ee2Lg4iffithGub0;!s;lIme0UnHodGrbachE;e,m2;calvAzale0S;dGubE;bGs0E;erg;aj,i;bs3l,mGordaO;en7;iev3U;gnMlJmaIndFo,rGsFuthi0;cGdn0za;ia;ge;eaHlG;agh0i,o;no;e,on;aVerQiLjeldsted,lKoIrHuG;chs,entAji41ll0;eem2iedm2;ntaGrt8urni0wl0;na;emi6orA;lipIsHtzgeraG;ld;ch0h0;ovG;!ic;hatDnanIrG;arGei9;a,i;deY;ov4;b0rre1D;dKinsJriksIsGvaB;cob3GpGtra3D;inoza,osiQ;en,s3;te8;er,is3warG;ds;aXePiNjurhuMoKrisco15uHvorakG;!oT;arte,boHmitru,nn,rGt3C;and,ic;is;g2he0Omingu7nErd1ItG;to;us;aGcki2Hmitr2Ossanayake,x3;s,z; JbnaIlHmirGrvisFvi,w2;!ov4;gado,ic;th;bo0groot,jo6lHsilGvriA;va;a cruz,e3uG;ca;hl,mcevsCnIt2WviG;dGes,s;ov,s3;ielsGku22;!en;ki;a0Be06hRiobQlarkPoIrGunningh1H;awfo0RivGuz;elli;h1lKntJoIrGs2Nx;byn,reG;a,ia;ke,p0;i,rer2K;em2liB;ns;!e;anu;aOeMiu,oIristGu6we;eGiaG;ns1;i,ng,p9uHwGy;!dH;dGng;huJ;!n,onGu6;!g;kJnIpm2ttHudhGv7;ry;erjee,o14;!d,g;ma,raboG;rty;bJl0Cng4rG;eghetHnG;a,y;ti;an,ota1C;cerAlder3mpbeLrIstGvadi0B;iGro;llo;doHl0Er,t0uGvalho;so;so,zo;ll;a0Fe01hYiXlUoNrKuIyG;rLtyG;qi;chan2rG;ke,ns;ank5iem,oGyant;oks,wG;ne;gdan5nIruya,su,uchaHyKziG;c,n5;rd;darGik;enG;ko;ov;aGond15;nco,zG;ev4;ancFshw16;a08oGuiy2;umGwmG;ik;ckRethov1gu,ktPnNrG;gJisInG;ascoGds1;ni;ha;er,mG;anG;!n;gtGit7nP;ss3;asF;hi;er,hG;am;b4ch,ez,hRiley,kk0ldw8nMrIshHtAu0;es;ir;bInHtlGua;ett;es,i0;ieYosa;dGik;a9yoG;padhyG;ay;ra;k,ng;ic;bb0Acos09d07g04kht05lZnPrLsl2tJyG;aHd8;in;la;chis3kiG;ns3;aImstro6sl2;an;ng;ujo,ya;dJgelHsaG;ri;ovG;!a;ersJov,reG;aGjEws;ss1;en;en,on,s3;on;eksejEiyEmeiIvG;ar7es;ez;da;ev;arwHuilG;ar;al;ams,l0;er;ta;as",Ordinal:"true¦eBf7nin5s3t0zeroE;enDhir1we0;lfCn7;d,t3;e0ixt8;cond,vent7;et0th;e6ie7;i2o0;r0urt3;tie4;ft1rst;ight0lev1;e0h,ie1;en0;th",Cardinal:"true¦bEeBf5mEnine7one,s4t0zero;en,h2rDw0;e0o;lve,n5;irt6ousands,ree;even2ix2;i3o0;r1ur0;!t2;ty;ft0ve;e2y;ight0lev1;!e0y;en;illions",Multiple:"true¦b3hundred,m3qu2se1t0;housand,r2;pt1xt1;adr0int0;illion",City:"true¦0:74;1:61;2:6G;3:6J;4:5S;a68b53c4Id48e44f3Wg3Hh39i31j2Wk2Fl23m1Mn1Co19p0Wq0Ur0Os05tRuQvLwDxiBy9z5;a7h5i4Muri4O;a5e5ongsh0;ng3H;greb,nzib5G;ang2e5okoha3Sunfu;katerin3Hrev0;a5n0Q;m5Hn;arsBeAi6roclBu5;h0xi,zh5P;c7n5;d5nipeg,terth4;hoek,s1L;hi5Zkl3A;l63xford;aw;a8e6i5ladivost5Molgogr6L;en3lni6S;ni22r5;o3saill4N;lenc4Wncouv3Sr3ughn;lan bat1Crumqi,trecht;aFbilisi,eEheDiBo9r7u5;l21n63r5;in,ku;i5ondh62;es51poli;kyo,m2Zron1Pulo5;n,uS;an5jua3l2Tmisoa6Bra3;j4Tshui; hag62ssaloni2H;gucigal26hr0l av1U;briz,i6llinn,mpe56ng5rtu,shk2R;i3Esh0;an,chu1n0p2Eyu0;aEeDh8kopje,owe1Gt7u5;ra5zh4X;ba0Ht;aten is55ockholm,rasbou67uttga2V;an8e6i5;jiazhua1llo1m5Xy0;f50n5;ya1zh4H;gh3Kt4Q;att45o1Vv44;cramen16int ClBn5o paulo,ppo3Rrajevo; 7aa,t5;a 5o domin3E;a3fe,m1M;antonio,die3Cfrancisco,j5ped3Nsalvad0J;o5u0;se;em,t lake ci5Fz25;lou58peters24;a9e8i6o5;me,t59;ga,o5yadh;! de janei3F;cife,ims,nn3Jykjavik;b4Sip4lei2Inc2Pwalpindi;ingdao,u5;ez2i0Q;aFeEhDiCo9r7u6yong5;ya1;eb59ya1;a5etor3M;g52to;rt5zn0; 5la4Co;au prin0Melizabe24sa03;ls3Prae5Atts26;iladelph3Gnom pe1Aoenix;ki1tah tik3E;dua,lerYnaji,r4Ot5;na,r32;ak44des0Km1Mr6s5ttawa;a3Vlo;an,d06;a7ew5ing2Fovosibir1Jyc; 5cast36;del24orlea44taip14;g8iro4Wn5pl2Wshv33v0;ch6ji1t5;es,o1;a1o1;a6o5p4;ya;no,sa0W;aEeCi9o6u5;mb2Ani26sc3Y;gadishu,nt6s5;c13ul;evideo,pelli1Rre2Z;ami,l6n14s5;kolc,sissauga;an,waukee;cca,d5lbour2Mmph41ndo1Cssi3;an,ell2Xi3;cau,drAkass2Sl9n8r5shh4A;aca6ib5rakesh,se2L;or;i1Sy;a4EchFdal0Zi47;mo;id;aDeAi8o6u5vSy2;anMckn0Odhia3;n5s angel26;d2g bea1N;brev2Be3Lma5nz,sb2verpo28;!ss27; ma39i5;c5pzig;est16; p6g5ho2Wn0Cusan24;os;az,la33;aHharFiClaipeBo9rak0Du7y5;iv,o5;to;ala lump4n5;mi1sh0;hi0Hlka2Xpavog4si5wlo2;ce;da;ev,n5rkuk;gst2sha5;sa;k5toum;iv;bHdu3llakuric0Qmpa3Fn6ohsiu1ra5un1Iwaguc0Q;c0Pj;d5o,p4;ah1Ty;a7e6i5ohannesV;l1Vn0;dd36rusalem;ip4k5;ar2H;bad0mph1OnArkutUs7taXz5;mir,tapala5;pa;fah0l6tanb5;ul;am2Zi2H;che2d5;ianap2Mo20;aAe7o5yder2W; chi mi5ms,nolulu;nh;f6lsin5rakli2;ki;ei;ifa,lifax,mCn5rb1Dva3;g8nov01oi;aFdanEenDhCiPlasgBo9raz,u5;a5jr23;dal6ng5yaquil;zh1J;aja2Oupe;ld coa1Bthen5;bu2S;ow;ent;e0Uoa;sk;lw7n5za;dhi5gt1E;nag0U;ay;aisal29es,o8r6ukuya5;ma;ankfu5esno;rt;rt5sh0; wor6ale5;za;th;d5indhov0Pl paso;in5mont2;bur5;gh;aBe8ha0Xisp4o7resd0Lu5;b5esseldorf,nkirk,rb0shanbe;ai,l0I;ha,nggu0rtmu13;hradSl6nv5troit;er;hi;donghIe6k09l5masc1Zr es sala1KugavpiY;i0lU;gu,je2;aJebu,hAleve0Vo5raio02uriti1Q;lo7n6penhag0Ar5;do1Ok;akKst0V;gUm5;bo;aBen8i6ongqi1ristchur5;ch;ang m7ca5ttago1;go;g6n5;ai;du,zho1;ng5ttogr14;ch8sha,zh07;gliari,i9lga8mayenJn6pe town,r5tanO;acCdiff;ber1Ac5;un;ry;ro;aWeNhKirmingh0WoJr9u5;chareTdapeTenos air7r5s0tu0;g5sa;as;es;a9is6usse5;ls;ba6t5;ol;ne;sil8tisla7zzav5;il5;le;va;ia;goZst2;op6ubaneshw5;ar;al;iCl9ng8r5;g6l5n;in;en;aluru,hazi;fa6grade,o horizon5;te;st;ji1rut;ghd0BkFn9ot8r7s6yan n4;ur;el,r07;celo3i,ranquil09;ou;du1g6ja lu5;ka;alo6k5;ok;re;ng;ers5u;field;a05b02cc01ddis aba00gartaZhmedXizawl,lSmPnHqa00rEsBt7uck5;la5;nd;h
gitextract_c9wmq0vi/
├── README.md
├── builds/
│ ├── compromise.js
│ ├── one/
│ │ ├── compromise-one.cjs
│ │ └── compromise-one.mjs
│ ├── three/
│ │ ├── compromise-three.cjs
│ │ └── compromise-three.mjs
│ └── two/
│ ├── compromise-two.cjs
│ └── compromise-two.mjs
├── changelog.md
├── data/
│ ├── README.md
│ ├── lexicon/
│ │ ├── adjectives/
│ │ │ ├── adjectives.js
│ │ │ └── comparables.js
│ │ ├── dates/
│ │ │ ├── dates.js
│ │ │ ├── durations.js
│ │ │ ├── months.js
│ │ │ └── weekdays.js
│ │ ├── index.js
│ │ ├── misc/
│ │ │ ├── adverbs.js
│ │ │ ├── conjunctions.js
│ │ │ ├── currencies.js
│ │ │ ├── determiners.js
│ │ │ ├── expressions.js
│ │ │ └── prepositions.js
│ │ ├── misc.js
│ │ ├── nouns/
│ │ │ ├── actors.js
│ │ │ ├── demonyms.js
│ │ │ ├── organizations.js
│ │ │ ├── possessives.js
│ │ │ ├── pronouns.js
│ │ │ ├── properNouns.js
│ │ │ ├── relative-prounoun.js
│ │ │ ├── singulars.js
│ │ │ ├── sportsTeams.js
│ │ │ └── uncountables.js
│ │ ├── numbers/
│ │ │ ├── cardinals.js
│ │ │ ├── multiples.js
│ │ │ ├── ordinals.js
│ │ │ └── units.js
│ │ ├── people/
│ │ │ ├── femaleNames.js
│ │ │ ├── firstnames.js
│ │ │ ├── honorifics.js
│ │ │ ├── lastnames.js
│ │ │ ├── maleNames.js
│ │ │ └── people.js
│ │ ├── places/
│ │ │ ├── cities.js
│ │ │ ├── countries.js
│ │ │ ├── places.js
│ │ │ └── regions.js
│ │ ├── switches/
│ │ │ ├── actor-verb.js
│ │ │ ├── adj-gerund.js
│ │ │ ├── adj-noun.js
│ │ │ ├── adj-past.js
│ │ │ ├── adj-present.js
│ │ │ ├── noun-gerund.js
│ │ │ ├── noun-verb.js
│ │ │ ├── person-adj.js
│ │ │ ├── person-date.js
│ │ │ ├── person-noun.js
│ │ │ ├── person-place.js
│ │ │ ├── person-verb.js
│ │ │ └── unit-noun.js
│ │ └── verbs/
│ │ ├── infinitives.js
│ │ ├── modals.js
│ │ ├── participles.js
│ │ ├── phrasals.js
│ │ └── verbs.js
│ └── pairs/
│ ├── AdjToNoun.js
│ ├── Comparative.js
│ ├── Gerund.js
│ ├── Participle.js
│ ├── PastTense.js
│ ├── PresentTense.js
│ ├── Superlative.js
│ └── index.js
├── demos/
│ ├── performance.html
│ ├── plugin.html
│ └── web-worker/
│ ├── _worker.js
│ └── index.html
├── eslint.config.js
├── one/
│ └── package.json
├── package.json
├── plugins/
│ ├── _experiments/
│ │ ├── ast/
│ │ │ ├── README.md
│ │ │ ├── package.json
│ │ │ ├── scratch.js
│ │ │ └── src/
│ │ │ ├── ast.js
│ │ │ ├── compute/
│ │ │ │ └── index.js
│ │ │ ├── lines.js
│ │ │ └── plugin.js
│ │ ├── cmd-k/
│ │ │ ├── README.md
│ │ │ ├── package.json
│ │ │ ├── scratch.js
│ │ │ └── src/
│ │ │ ├── plugin.js
│ │ │ ├── searchBang.js
│ │ │ └── slashCmd.js
│ │ ├── compress/
│ │ │ ├── README.md
│ │ │ └── src/
│ │ │ ├── index.js
│ │ │ └── lz.js
│ │ ├── markdown/
│ │ │ ├── README.md
│ │ │ ├── package.json
│ │ │ ├── scratch.js
│ │ │ └── src/
│ │ │ ├── Wrap.js
│ │ │ ├── parse/
│ │ │ │ ├── crawl.js
│ │ │ │ ├── index.js
│ │ │ │ ├── toPlaintext.js
│ │ │ │ └── uuid.js
│ │ │ └── plugin.js
│ │ └── sentiment/
│ │ ├── README.md
│ │ ├── package.json
│ │ ├── scratch.js
│ │ ├── src/
│ │ │ ├── data/
│ │ │ │ ├── _pckd.js
│ │ │ │ └── index.js
│ │ │ ├── emoji.js
│ │ │ ├── escape.js
│ │ │ ├── lib.js
│ │ │ └── plugin.js
│ │ └── test.js
│ ├── dates/
│ │ ├── README.md
│ │ ├── builds/
│ │ │ ├── compromise-dates.cjs
│ │ │ └── compromise-dates.mjs
│ │ ├── changelog.md
│ │ ├── demo/
│ │ │ └── index.html
│ │ ├── index.d.cts
│ │ ├── index.d.ts
│ │ ├── package.json
│ │ ├── scratch.js
│ │ ├── scripts/
│ │ │ ├── perf.js
│ │ │ └── version.js
│ │ ├── src/
│ │ │ ├── _version.js
│ │ │ ├── api/
│ │ │ │ ├── dates.js
│ │ │ │ ├── durations/
│ │ │ │ │ ├── index.js
│ │ │ │ │ └── parse.js
│ │ │ │ ├── find/
│ │ │ │ │ ├── index.js
│ │ │ │ │ └── split.js
│ │ │ │ ├── index.js
│ │ │ │ ├── normalize.js
│ │ │ │ ├── parse/
│ │ │ │ │ ├── index.js
│ │ │ │ │ ├── normalize.js
│ │ │ │ │ ├── one/
│ │ │ │ │ │ ├── 01-tokenize/
│ │ │ │ │ │ │ ├── 01-shift.js
│ │ │ │ │ │ │ ├── 02-counter.js
│ │ │ │ │ │ │ ├── 03-time.js
│ │ │ │ │ │ │ ├── 04-relative.js
│ │ │ │ │ │ │ ├── 05-section.js
│ │ │ │ │ │ │ ├── 06-timezone.js
│ │ │ │ │ │ │ ├── 07-weekday.js
│ │ │ │ │ │ │ ├── _timezones.js
│ │ │ │ │ │ │ └── index.js
│ │ │ │ │ │ ├── 02-parse/
│ │ │ │ │ │ │ ├── 01-today.js
│ │ │ │ │ │ │ ├── 02-holidays.js
│ │ │ │ │ │ │ ├── 03-next-last.js
│ │ │ │ │ │ │ ├── 04-yearly.js
│ │ │ │ │ │ │ ├── 05-explicit.js
│ │ │ │ │ │ │ └── index.js
│ │ │ │ │ │ ├── 03-transform/
│ │ │ │ │ │ │ ├── addCounter.js
│ │ │ │ │ │ │ └── index.js
│ │ │ │ │ │ ├── index.js
│ │ │ │ │ │ └── units/
│ │ │ │ │ │ ├── Unit.js
│ │ │ │ │ │ ├── _day.js
│ │ │ │ │ │ ├── _time.js
│ │ │ │ │ │ ├── _week.js
│ │ │ │ │ │ ├── _year.js
│ │ │ │ │ │ └── index.js
│ │ │ │ │ └── range/
│ │ │ │ │ ├── 01-two-times.js
│ │ │ │ │ ├── 02-date-range.js
│ │ │ │ │ ├── 03-one-date.js
│ │ │ │ │ ├── _reverse.js
│ │ │ │ │ ├── combos/
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── index.js
│ │ │ │ │ └── intervals/
│ │ │ │ │ └── index.js
│ │ │ │ ├── times.js
│ │ │ │ └── toJSON.js
│ │ │ ├── compute/
│ │ │ │ ├── 00-year.js
│ │ │ │ ├── 01-time-range.js
│ │ │ │ ├── 02-timezone.js
│ │ │ │ ├── 03-fixup.js
│ │ │ │ ├── index.js
│ │ │ │ └── matches.js
│ │ │ ├── debug.js
│ │ │ ├── model/
│ │ │ │ ├── regex.js
│ │ │ │ ├── tags.js
│ │ │ │ └── words/
│ │ │ │ ├── dates.js
│ │ │ │ ├── durations.js
│ │ │ │ ├── holidays.js
│ │ │ │ ├── index.js
│ │ │ │ ├── times.js
│ │ │ │ └── timezones.js
│ │ │ └── plugin.js
│ │ └── tests/
│ │ ├── _lib.js
│ │ ├── ambig-month.test.js
│ │ ├── ambig-week.test.js
│ │ ├── ambig-weekday.test.js
│ │ ├── backlog/
│ │ │ ├── combo.ignore.js
│ │ │ ├── duckling.ignore.js
│ │ │ ├── interval.ignore.js
│ │ │ └── units.ignore.js
│ │ ├── before-after.test.js
│ │ ├── chronic.test.js
│ │ ├── day-start.test.js
│ │ ├── dmy.test.js
│ │ ├── duration-range.test.js
│ │ ├── duration.test.js
│ │ ├── durations.test.js
│ │ ├── end.test.js
│ │ ├── equals.test.js
│ │ ├── false-positive.test.js
│ │ ├── format.test.js
│ │ ├── full-iso.test.js
│ │ ├── fullDates.test.js
│ │ ├── has-date.test.js
│ │ ├── misc.test.js
│ │ ├── phrase.test.js
│ │ ├── startDates.test.js
│ │ ├── tagger/
│ │ │ ├── ambiguous.test.js
│ │ │ ├── date-chunk.test.js
│ │ │ └── date_tag.test.js
│ │ ├── times.test.js
│ │ ├── timezone.test.js
│ │ ├── to-iso.test.js
│ │ ├── today.test.js
│ │ ├── tokenizer.test.js
│ │ └── week.test.js
│ ├── paragraphs/
│ │ ├── README.md
│ │ ├── builds/
│ │ │ ├── compromise-paragraphs.cjs
│ │ │ └── compromise-paragraphs.mjs
│ │ ├── index.d.ts
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── api.js
│ │ │ └── plugin.js
│ │ └── tests/
│ │ ├── _lib.js
│ │ └── misc.test.js
│ ├── payload/
│ │ ├── README.md
│ │ ├── builds/
│ │ │ ├── compromise-payload.cjs
│ │ │ └── compromise-payload.mjs
│ │ ├── index.d.ts
│ │ ├── package.json
│ │ ├── scratch.js
│ │ ├── src/
│ │ │ ├── debug.js
│ │ │ └── plugin.js
│ │ └── tests/
│ │ ├── _lib.js
│ │ └── payload.test.js
│ ├── speech/
│ │ ├── README.md
│ │ ├── builds/
│ │ │ ├── compromise-speech.cjs
│ │ │ └── compromise-speech.mjs
│ │ ├── demo/
│ │ │ └── index.html
│ │ ├── index.d.ts
│ │ ├── package.json
│ │ ├── scratch.js
│ │ ├── src/
│ │ │ ├── api.js
│ │ │ ├── compute/
│ │ │ │ ├── index.js
│ │ │ │ ├── soundsLike/
│ │ │ │ │ ├── index.js
│ │ │ │ │ ├── metaphone.js
│ │ │ │ │ └── transformations.js
│ │ │ │ └── syllables/
│ │ │ │ ├── index.js
│ │ │ │ ├── postProcess.js
│ │ │ │ └── syllables.js
│ │ │ └── plugin.js
│ │ └── tests/
│ │ ├── _lib.js
│ │ ├── soundsLike.test.js
│ │ └── syllables.test.js
│ ├── speed/
│ │ ├── README.md
│ │ ├── builds/
│ │ │ ├── compromise-speed.cjs
│ │ │ └── compromise-speed.mjs
│ │ ├── demo/
│ │ │ └── index.html
│ │ ├── index.d.ts
│ │ ├── package.json
│ │ ├── scratch.js
│ │ ├── scripts/
│ │ │ └── version.js
│ │ ├── src/
│ │ │ ├── _version.js
│ │ │ ├── keypress/
│ │ │ │ └── index.js
│ │ │ ├── lazyParse/
│ │ │ │ ├── lazyParse.js
│ │ │ │ ├── maybeMatch.js
│ │ │ │ └── plugin.js
│ │ │ ├── plugin.js
│ │ │ ├── stream/
│ │ │ │ └── streamFile.js
│ │ │ └── workerPool/
│ │ │ ├── index.js
│ │ │ ├── plugin.js
│ │ │ ├── pool/
│ │ │ │ ├── create.js
│ │ │ │ └── worker.js
│ │ │ └── rip.js
│ │ └── tests/
│ │ ├── _lib.js
│ │ ├── files/
│ │ │ └── freshPrince.txt
│ │ └── stream.test.js
│ ├── stats/
│ │ ├── README.md
│ │ ├── builds/
│ │ │ ├── compromise-stats.cjs
│ │ │ └── compromise-stats.mjs
│ │ ├── demo/
│ │ │ └── index.html
│ │ ├── index.d.ts
│ │ ├── package.json
│ │ ├── scratch.js
│ │ ├── scripts/
│ │ │ ├── generate.js
│ │ │ └── pack.js
│ │ ├── src/
│ │ │ ├── compute.js
│ │ │ ├── ngram/
│ │ │ │ ├── endGrams.js
│ │ │ │ ├── getGrams.js
│ │ │ │ ├── index.js
│ │ │ │ ├── sort.js
│ │ │ │ ├── startGrams.js
│ │ │ │ └── tokenize.js
│ │ │ ├── plugin.js
│ │ │ └── tfidf/
│ │ │ ├── _model.js
│ │ │ ├── idf.js
│ │ │ ├── index.js
│ │ │ ├── tf.js
│ │ │ └── unpack.js
│ │ └── tests/
│ │ ├── _lib.js
│ │ ├── edgegram.test.js
│ │ ├── misc.test.js
│ │ └── ngram.test.js
│ └── wikipedia/
│ ├── README.md
│ ├── builds/
│ │ ├── compromise-wikipedia.cjs
│ │ └── compromise-wikipedia.mjs
│ ├── config.js
│ ├── demo/
│ │ └── index.html
│ ├── index.d.ts
│ ├── package.json
│ ├── scratch.js
│ ├── scripts/
│ │ ├── generate/
│ │ │ ├── 01-download.js
│ │ │ ├── 02-filter.js
│ │ │ ├── 03-compress.js
│ │ │ ├── _no-list.js
│ │ │ └── index.js
│ │ ├── perf.js
│ │ └── stat.js
│ ├── src/
│ │ ├── _model.js
│ │ └── plugin.js
│ └── tests/
│ ├── _lib.js
│ └── misc.test.js
├── scratch.js
├── scripts/
│ ├── chunks.js
│ ├── coreference/
│ │ └── index.js
│ ├── debug.js
│ ├── match-linter.js
│ ├── match.js
│ ├── pack.js
│ ├── patterns/
│ │ ├── manual.js
│ │ ├── patterns.js
│ │ └── tester.js
│ ├── perf/
│ │ ├── _fetch.js
│ │ ├── flame/
│ │ │ ├── _sotu-text.js
│ │ │ └── index.js
│ │ ├── index.js
│ │ ├── novel.js
│ │ ├── package.json
│ │ ├── pool/
│ │ │ ├── _lib.js
│ │ │ ├── lookup-worker.js
│ │ │ ├── pool.js
│ │ │ └── worker.js
│ │ └── versions.js
│ ├── plugins.js
│ ├── test/
│ │ ├── coverage.js
│ │ ├── index.js
│ │ ├── smoke.test.js
│ │ ├── stress.js
│ │ └── types.ts
│ ├── typescript/
│ │ ├── one.ts
│ │ ├── three.ts
│ │ └── two.ts
│ └── version.js
├── src/
│ ├── 1-one/
│ │ ├── cache/
│ │ │ ├── api.js
│ │ │ ├── compute.js
│ │ │ ├── methods/
│ │ │ │ ├── cacheDoc.js
│ │ │ │ └── index.js
│ │ │ └── plugin.js
│ │ ├── change/
│ │ │ ├── api/
│ │ │ │ ├── case.js
│ │ │ │ ├── concat.js
│ │ │ │ ├── harden.js
│ │ │ │ ├── index.js
│ │ │ │ ├── insert.js
│ │ │ │ ├── lib/
│ │ │ │ │ ├── _sort.js
│ │ │ │ │ ├── insert.js
│ │ │ │ │ └── remove.js
│ │ │ │ ├── remove.js
│ │ │ │ ├── replace.js
│ │ │ │ ├── sort.js
│ │ │ │ └── whitespace.js
│ │ │ ├── compute/
│ │ │ │ ├── index.js
│ │ │ │ └── uuid.js
│ │ │ └── plugin.js
│ │ ├── contraction-one/
│ │ │ ├── compute/
│ │ │ │ ├── contractions/
│ │ │ │ │ ├── _splice.js
│ │ │ │ │ ├── apostrophe-d.js
│ │ │ │ │ ├── apostrophe-t.js
│ │ │ │ │ ├── french.js
│ │ │ │ │ ├── index.js
│ │ │ │ │ ├── number-range.js
│ │ │ │ │ └── number-unit.js
│ │ │ │ └── index.js
│ │ │ ├── model/
│ │ │ │ ├── contractions.js
│ │ │ │ ├── index.js
│ │ │ │ └── number-suffix.js
│ │ │ └── plugin.js
│ │ ├── freeze/
│ │ │ ├── compute.js
│ │ │ ├── debug.js
│ │ │ └── plugin.js
│ │ ├── lexicon/
│ │ │ ├── compute/
│ │ │ │ ├── index.js
│ │ │ │ ├── multi-word.js
│ │ │ │ └── single-word.js
│ │ │ ├── lib.js
│ │ │ ├── methods/
│ │ │ │ ├── expand.js
│ │ │ │ └── index.js
│ │ │ └── plugin.js
│ │ ├── lookup/
│ │ │ ├── api/
│ │ │ │ ├── buildTrie/
│ │ │ │ │ ├── compress.js
│ │ │ │ │ └── index.js
│ │ │ │ ├── index.js
│ │ │ │ └── scan.js
│ │ │ └── plugin.js
│ │ ├── match/
│ │ │ ├── api/
│ │ │ │ ├── _lib.js
│ │ │ │ ├── index.js
│ │ │ │ ├── join.js
│ │ │ │ ├── lookaround.js
│ │ │ │ ├── match.js
│ │ │ │ └── split.js
│ │ │ ├── lib.js
│ │ │ ├── methods/
│ │ │ │ ├── index.js
│ │ │ │ ├── match/
│ │ │ │ │ ├── 01-failFast.js
│ │ │ │ │ ├── 02-from-here.js
│ │ │ │ │ ├── 03-getGroup.js
│ │ │ │ │ ├── 03-notIf.js
│ │ │ │ │ ├── _lib.js
│ │ │ │ │ ├── index.js
│ │ │ │ │ ├── steps/
│ │ │ │ │ │ ├── and-block.js
│ │ │ │ │ │ ├── astrix.js
│ │ │ │ │ │ ├── contraction-skip.js
│ │ │ │ │ │ ├── greedy-match.js
│ │ │ │ │ │ ├── logic/
│ │ │ │ │ │ │ ├── and-or.js
│ │ │ │ │ │ │ ├── greedy.js
│ │ │ │ │ │ │ └── negative-greedy.js
│ │ │ │ │ │ ├── negative.js
│ │ │ │ │ │ ├── optional-match.js
│ │ │ │ │ │ ├── or-block.js
│ │ │ │ │ │ └── simple-match.js
│ │ │ │ │ └── term/
│ │ │ │ │ ├── _fuzzy.js
│ │ │ │ │ └── doesMatch.js
│ │ │ │ ├── parseMatch/
│ │ │ │ │ ├── 01-parseBlocks.js
│ │ │ │ │ ├── 02-parseToken.js
│ │ │ │ │ ├── 03-splitHyphens.js
│ │ │ │ │ ├── 04-inflect-root.js
│ │ │ │ │ ├── 05-postProcess.js
│ │ │ │ │ └── index.js
│ │ │ │ └── termMethods.js
│ │ │ └── plugin.js
│ │ ├── output/
│ │ │ ├── api/
│ │ │ │ ├── _fmts.js
│ │ │ │ ├── _text.js
│ │ │ │ ├── debug.js
│ │ │ │ ├── html.js
│ │ │ │ ├── index.js
│ │ │ │ ├── json.js
│ │ │ │ ├── out.js
│ │ │ │ ├── text.js
│ │ │ │ └── wrap.js
│ │ │ ├── methods/
│ │ │ │ ├── debug/
│ │ │ │ │ ├── _color.js
│ │ │ │ │ ├── chunks.js
│ │ │ │ │ ├── client-side.js
│ │ │ │ │ ├── highlight.js
│ │ │ │ │ ├── index.js
│ │ │ │ │ └── tags.js
│ │ │ │ ├── hash.js
│ │ │ │ └── index.js
│ │ │ └── plugin.js
│ │ ├── pointers/
│ │ │ ├── api/
│ │ │ │ ├── index.js
│ │ │ │ └── lib/
│ │ │ │ ├── _lib.js
│ │ │ │ ├── difference.js
│ │ │ │ ├── intersection.js
│ │ │ │ ├── split.js
│ │ │ │ └── union.js
│ │ │ ├── methods/
│ │ │ │ ├── getDoc.js
│ │ │ │ └── index.js
│ │ │ └── plugin.js
│ │ ├── sweep/
│ │ │ ├── api.js
│ │ │ ├── lib.js
│ │ │ ├── methods/
│ │ │ │ ├── buildNet/
│ │ │ │ │ ├── 01-parse.js
│ │ │ │ │ └── index.js
│ │ │ │ ├── index.js
│ │ │ │ ├── sweep/
│ │ │ │ │ ├── 01-getHooks.js
│ │ │ │ │ ├── 02-trim-down.js
│ │ │ │ │ ├── 04-runMatch.js
│ │ │ │ │ └── index.js
│ │ │ │ └── tagger/
│ │ │ │ ├── canBe.js
│ │ │ │ └── index.js
│ │ │ └── plugin.js
│ │ ├── tag/
│ │ │ ├── api/
│ │ │ │ ├── index.js
│ │ │ │ └── tag.js
│ │ │ ├── compute/
│ │ │ │ └── tagRank.js
│ │ │ ├── lib.js
│ │ │ ├── methods/
│ │ │ │ ├── addTags/
│ │ │ │ │ ├── 01-validate.js
│ │ │ │ │ ├── 02-fmt.js
│ │ │ │ │ ├── _colors.js
│ │ │ │ │ └── index.js
│ │ │ │ ├── canBe.js
│ │ │ │ ├── index.js
│ │ │ │ ├── setTag.js
│ │ │ │ └── unTag.js
│ │ │ └── plugin.js
│ │ ├── tokenize/
│ │ │ ├── compute/
│ │ │ │ ├── alias.js
│ │ │ │ ├── freq.js
│ │ │ │ ├── index.js
│ │ │ │ ├── machine.js
│ │ │ │ ├── normal/
│ │ │ │ │ ├── 01-cleanup.js
│ │ │ │ │ ├── 02-acronyms.js
│ │ │ │ │ └── index.js
│ │ │ │ ├── offset.js
│ │ │ │ ├── reindex.js
│ │ │ │ └── wordCount.js
│ │ │ ├── methods/
│ │ │ │ ├── 01-sentences/
│ │ │ │ │ ├── 01-simple-split.js
│ │ │ │ │ ├── 02-simple-merge.js
│ │ │ │ │ ├── 03-smart-merge.js
│ │ │ │ │ ├── 04-quote-merge.js
│ │ │ │ │ ├── 05-parens-merge.js
│ │ │ │ │ ├── index.js
│ │ │ │ │ └── is-sentence.js
│ │ │ │ ├── 02-terms/
│ │ │ │ │ ├── 01-hyphens.js
│ │ │ │ │ ├── 02-slashes.js
│ │ │ │ │ ├── 03-ranges.js
│ │ │ │ │ └── index.js
│ │ │ │ ├── 03-whitespace/
│ │ │ │ │ ├── index.js
│ │ │ │ │ └── tokenize.js
│ │ │ │ ├── index.js
│ │ │ │ ├── parse.js
│ │ │ │ └── unicode.js
│ │ │ ├── model/
│ │ │ │ ├── abbreviations/
│ │ │ │ │ ├── honorifics.js
│ │ │ │ │ ├── misc.js
│ │ │ │ │ ├── months.js
│ │ │ │ │ ├── nouns.js
│ │ │ │ │ ├── organizations.js
│ │ │ │ │ ├── places.js
│ │ │ │ │ └── units.js
│ │ │ │ ├── aliases.js
│ │ │ │ ├── index.js
│ │ │ │ ├── lexicon.js
│ │ │ │ ├── prefixes.js
│ │ │ │ ├── punctuation.js
│ │ │ │ ├── suffixes.js
│ │ │ │ └── unicode.js
│ │ │ └── plugin.js
│ │ └── typeahead/
│ │ ├── api.js
│ │ ├── compute.js
│ │ ├── lib/
│ │ │ ├── allPrefixes.js
│ │ │ └── index.js
│ │ └── plugin.js
│ ├── 2-two/
│ │ ├── contraction-two/
│ │ │ ├── api/
│ │ │ │ ├── contract.js
│ │ │ │ └── index.js
│ │ │ ├── compute/
│ │ │ │ ├── _splice.js
│ │ │ │ ├── apostrophe-d.js
│ │ │ │ ├── apostrophe-s.js
│ │ │ │ ├── apostrophe-t.js
│ │ │ │ ├── index.js
│ │ │ │ └── isPossessive.js
│ │ │ └── plugin.js
│ │ ├── lazy/
│ │ │ ├── lazyParse.js
│ │ │ ├── maybeMatch.js
│ │ │ └── plugin.js
│ │ ├── postTagger/
│ │ │ ├── api.js
│ │ │ ├── compute/
│ │ │ │ └── index.js
│ │ │ ├── model/
│ │ │ │ ├── _misc.js
│ │ │ │ ├── adjective/
│ │ │ │ │ ├── adj-adverb.js
│ │ │ │ │ ├── adj-gerund.js
│ │ │ │ │ ├── adj-noun.js
│ │ │ │ │ ├── adj-verb.js
│ │ │ │ │ └── adjective.js
│ │ │ │ ├── adverb.js
│ │ │ │ ├── conjunctions.js
│ │ │ │ ├── dates/
│ │ │ │ │ ├── date-phrase.js
│ │ │ │ │ └── date.js
│ │ │ │ ├── expressions.js
│ │ │ │ ├── index.js
│ │ │ │ ├── nouns/
│ │ │ │ │ ├── nouns.js
│ │ │ │ │ ├── organizations.js
│ │ │ │ │ └── places.js
│ │ │ │ ├── numbers/
│ │ │ │ │ ├── fractions.js
│ │ │ │ │ ├── money.js
│ │ │ │ │ └── numbers.js
│ │ │ │ ├── person/
│ │ │ │ │ ├── ambig-name.js
│ │ │ │ │ └── person-phrase.js
│ │ │ │ └── verbs/
│ │ │ │ ├── adj-gerund.js
│ │ │ │ ├── auxiliary.js
│ │ │ │ ├── imperative.js
│ │ │ │ ├── noun-gerund.js
│ │ │ │ ├── passive.js
│ │ │ │ ├── phrasal.js
│ │ │ │ ├── verb-noun.js
│ │ │ │ └── verbs.js
│ │ │ └── plugin.js
│ │ ├── preTagger/
│ │ │ ├── compute/
│ │ │ │ ├── index.js
│ │ │ │ ├── penn.js
│ │ │ │ ├── root.js
│ │ │ │ └── tagger/
│ │ │ │ ├── 1st-pass/
│ │ │ │ │ ├── 01-colons.js
│ │ │ │ │ └── 02-hyphens.js
│ │ │ │ ├── 2nd-pass/
│ │ │ │ │ ├── 00-tagSwitch.js
│ │ │ │ │ ├── 01-case.js
│ │ │ │ │ ├── 02-suffix.js
│ │ │ │ │ ├── 03-regex.js
│ │ │ │ │ ├── 04-prefix.js
│ │ │ │ │ └── 05-year.js
│ │ │ │ ├── 3rd-pass/
│ │ │ │ │ ├── 01-acronym.js
│ │ │ │ │ ├── 02-neighbours.js
│ │ │ │ │ ├── 03-orgWords.js
│ │ │ │ │ ├── 04-placeWords.js
│ │ │ │ │ ├── 05-fallback.js
│ │ │ │ │ ├── 06-switches.js
│ │ │ │ │ ├── 07-verb-type.js
│ │ │ │ │ ├── 08-imperative.js
│ │ │ │ │ ├── _adhoc.js
│ │ │ │ │ └── _fillTags.js
│ │ │ │ ├── _fastTag.js
│ │ │ │ └── index.js
│ │ │ ├── methods/
│ │ │ │ ├── expand/
│ │ │ │ │ ├── byTag.js
│ │ │ │ │ └── index.js
│ │ │ │ ├── index.js
│ │ │ │ ├── looksPlural.js
│ │ │ │ ├── quickSplit.js
│ │ │ │ └── transform/
│ │ │ │ ├── adjectives/
│ │ │ │ │ ├── conjugate/
│ │ │ │ │ │ ├── fromAdverb.js
│ │ │ │ │ │ ├── lib.js
│ │ │ │ │ │ └── toAdverb.js
│ │ │ │ │ ├── index.js
│ │ │ │ │ └── inflect.js
│ │ │ │ ├── index.js
│ │ │ │ ├── nouns/
│ │ │ │ │ ├── index.js
│ │ │ │ │ ├── toPlural/
│ │ │ │ │ │ ├── _rules.js
│ │ │ │ │ │ └── index.js
│ │ │ │ │ └── toSingular/
│ │ │ │ │ ├── _rules.js
│ │ │ │ │ └── index.js
│ │ │ │ └── verbs/
│ │ │ │ ├── conjugate/
│ │ │ │ │ └── index.js
│ │ │ │ ├── getTense/
│ │ │ │ │ ├── _guess.js
│ │ │ │ │ └── index.js
│ │ │ │ ├── index.js
│ │ │ │ └── toInfinitive/
│ │ │ │ └── index.js
│ │ │ ├── model/
│ │ │ │ ├── _expand/
│ │ │ │ │ ├── index.js
│ │ │ │ │ └── irregulars.js
│ │ │ │ ├── clues/
│ │ │ │ │ ├── _adj.js
│ │ │ │ │ ├── _gerund.js
│ │ │ │ │ ├── _noun.js
│ │ │ │ │ ├── _person.js
│ │ │ │ │ ├── _verb.js
│ │ │ │ │ ├── actor-verb.js
│ │ │ │ │ ├── adj-gerund.js
│ │ │ │ │ ├── adj-noun.js
│ │ │ │ │ ├── adj-past.js
│ │ │ │ │ ├── adj-present.js
│ │ │ │ │ ├── index.js
│ │ │ │ │ ├── noun-gerund.js
│ │ │ │ │ ├── noun-verb.js
│ │ │ │ │ ├── person-adj.js
│ │ │ │ │ ├── person-date.js
│ │ │ │ │ ├── person-noun.js
│ │ │ │ │ ├── person-place.js
│ │ │ │ │ ├── person-verb.js
│ │ │ │ │ └── unit-noun.js
│ │ │ │ ├── index.js
│ │ │ │ ├── irregulars/
│ │ │ │ │ └── plurals.js
│ │ │ │ ├── lexicon/
│ │ │ │ │ ├── _data.js
│ │ │ │ │ ├── emoticons.js
│ │ │ │ │ ├── frozenLex.js
│ │ │ │ │ ├── index.js
│ │ │ │ │ └── misc.js
│ │ │ │ ├── models/
│ │ │ │ │ ├── _data.js
│ │ │ │ │ └── index.js
│ │ │ │ ├── orgWords.js
│ │ │ │ ├── patterns/
│ │ │ │ │ ├── endsWith.js
│ │ │ │ │ ├── neighbours.js
│ │ │ │ │ ├── prefixes.js
│ │ │ │ │ └── suffixes.js
│ │ │ │ ├── personWords.js
│ │ │ │ ├── placeWords.js
│ │ │ │ └── regex/
│ │ │ │ ├── regex-normal.js
│ │ │ │ ├── regex-numbers.js
│ │ │ │ └── regex-text.js
│ │ │ ├── plugin.js
│ │ │ └── tagSet/
│ │ │ ├── dates.js
│ │ │ ├── index.js
│ │ │ ├── misc.js
│ │ │ ├── nouns.js
│ │ │ ├── values.js
│ │ │ └── verbs.js
│ │ └── swap/
│ │ ├── api/
│ │ │ ├── swap-verb.js
│ │ │ └── swap.js
│ │ └── plugin.js
│ ├── 3-three/
│ │ ├── adjectives/
│ │ │ └── plugin.js
│ │ ├── adverbs/
│ │ │ └── plugin.js
│ │ ├── chunker/
│ │ │ ├── api/
│ │ │ │ ├── api.js
│ │ │ │ ├── chunks.js
│ │ │ │ └── clauses.js
│ │ │ ├── compute/
│ │ │ │ ├── 01-easy.js
│ │ │ │ ├── 02-neighbours.js
│ │ │ │ ├── 03-matcher.js
│ │ │ │ ├── 04-fallback.js
│ │ │ │ ├── 05-fixUp.js
│ │ │ │ └── index.js
│ │ │ └── plugin.js
│ │ ├── coreference/
│ │ │ ├── api/
│ │ │ │ └── pronouns.js
│ │ │ ├── compute/
│ │ │ │ ├── findIt.js
│ │ │ │ ├── findPerson.js
│ │ │ │ ├── findThey.js
│ │ │ │ ├── index.js
│ │ │ │ └── lib.js
│ │ │ └── plugin.js
│ │ ├── misc/
│ │ │ ├── acronyms/
│ │ │ │ └── index.js
│ │ │ ├── parentheses/
│ │ │ │ ├── fns.js
│ │ │ │ └── index.js
│ │ │ ├── plugin.js
│ │ │ ├── possessives/
│ │ │ │ └── index.js
│ │ │ ├── quotations/
│ │ │ │ ├── fns.js
│ │ │ │ └── index.js
│ │ │ ├── selections/
│ │ │ │ └── index.js
│ │ │ └── slashes/
│ │ │ └── index.js
│ │ ├── normalize/
│ │ │ ├── api.js
│ │ │ ├── methods.js
│ │ │ └── plugin.js
│ │ ├── nouns/
│ │ │ ├── api/
│ │ │ │ ├── api.js
│ │ │ │ ├── hasPlural.js
│ │ │ │ ├── isPlural.js
│ │ │ │ ├── isSubordinate.js
│ │ │ │ ├── parse.js
│ │ │ │ ├── toJSON.js
│ │ │ │ ├── toPlural.js
│ │ │ │ └── toSingular.js
│ │ │ ├── find.js
│ │ │ └── plugin.js
│ │ ├── numbers/
│ │ │ ├── fractions/
│ │ │ │ ├── api.js
│ │ │ │ ├── convert/
│ │ │ │ │ ├── toCardinal.js
│ │ │ │ │ └── toOrdinal.js
│ │ │ │ ├── find.js
│ │ │ │ └── parse.js
│ │ │ ├── numbers/
│ │ │ │ ├── _toString.js
│ │ │ │ ├── api.js
│ │ │ │ ├── find.js
│ │ │ │ ├── format/
│ │ │ │ │ ├── index.js
│ │ │ │ │ ├── suffix.js
│ │ │ │ │ ├── toOrdinal/
│ │ │ │ │ │ ├── numOrdinal.js
│ │ │ │ │ │ └── textOrdinal.js
│ │ │ │ │ └── toText/
│ │ │ │ │ ├── data.js
│ │ │ │ │ └── index.js
│ │ │ │ ├── isUnit.js
│ │ │ │ └── parse/
│ │ │ │ ├── index.js
│ │ │ │ └── toNumber/
│ │ │ │ ├── data.js
│ │ │ │ ├── findModifiers.js
│ │ │ │ ├── index.js
│ │ │ │ ├── parseDecimals.js
│ │ │ │ ├── parseNumeric.js
│ │ │ │ └── validate.js
│ │ │ └── plugin.js
│ │ ├── redact/
│ │ │ └── plugin.js
│ │ ├── sentences/
│ │ │ ├── api.js
│ │ │ ├── conjugate/
│ │ │ │ ├── toFuture.js
│ │ │ │ ├── toInfinitive.js
│ │ │ │ ├── toNegative.js
│ │ │ │ ├── toPast.js
│ │ │ │ └── toPresent.js
│ │ │ ├── parse/
│ │ │ │ ├── index.js
│ │ │ │ └── mainClause.js
│ │ │ ├── plugin.js
│ │ │ └── questions.js
│ │ ├── topics/
│ │ │ ├── orgs/
│ │ │ │ └── api.js
│ │ │ ├── people/
│ │ │ │ ├── api.js
│ │ │ │ ├── find.js
│ │ │ │ ├── gender.js
│ │ │ │ └── parse.js
│ │ │ ├── places/
│ │ │ │ ├── api.js
│ │ │ │ └── find.js
│ │ │ ├── plugin.js
│ │ │ └── topics.js
│ │ └── verbs/
│ │ ├── api/
│ │ │ ├── api.js
│ │ │ ├── conjugate/
│ │ │ │ ├── toFuture.js
│ │ │ │ ├── toGerund.js
│ │ │ │ ├── toInfinitive.js
│ │ │ │ ├── toNegative.js
│ │ │ │ ├── toParticiple.js
│ │ │ │ ├── toPast.js
│ │ │ │ └── toPresent.js
│ │ │ ├── debug.js
│ │ │ ├── lib.js
│ │ │ ├── parse/
│ │ │ │ ├── adverbs.js
│ │ │ │ ├── getSubject.js
│ │ │ │ ├── grammar/
│ │ │ │ │ ├── forms.js
│ │ │ │ │ └── index.js
│ │ │ │ ├── index.js
│ │ │ │ └── root.js
│ │ │ └── toJSON.js
│ │ ├── find.js
│ │ └── plugin.js
│ ├── 4-four/
│ │ ├── facts/
│ │ │ ├── api.js
│ │ │ ├── parse/
│ │ │ │ ├── adjective.js
│ │ │ │ ├── index.js
│ │ │ │ ├── noun.js
│ │ │ │ ├── pivot.js
│ │ │ │ ├── postProcess.js
│ │ │ │ ├── statement/
│ │ │ │ │ └── index.js
│ │ │ │ └── verb.js
│ │ │ └── plugin.js
│ │ └── sense/
│ │ ├── api/
│ │ │ └── api.js
│ │ ├── compute/
│ │ │ └── index.js
│ │ ├── model/
│ │ │ ├── _data.js
│ │ │ ├── index.js
│ │ │ ├── more.js
│ │ │ └── senses/
│ │ │ ├── adjective.js
│ │ │ ├── index.js
│ │ │ ├── noun.js
│ │ │ └── verb.js
│ │ └── plugin.js
│ ├── API/
│ │ ├── View.js
│ │ ├── _lib.js
│ │ ├── extend.js
│ │ ├── inputs.js
│ │ ├── methods/
│ │ │ ├── compute.js
│ │ │ ├── index.js
│ │ │ ├── loops.js
│ │ │ └── utils.js
│ │ └── world.js
│ ├── _version.js
│ ├── four.js
│ ├── nlp.js
│ ├── one.js
│ ├── three.js
│ └── two.js
├── tagger.scratch.js
├── tests/
│ ├── _ignore/
│ │ ├── abbreviation.ignore.js
│ │ ├── before-after.ignore.js
│ │ ├── participle.ignore.js
│ │ ├── punctuation.ignore.js
│ │ ├── quotations.ignore.js
│ │ └── toQuestion.ignore.js
│ ├── bugs.md
│ ├── four/
│ │ ├── _lib.js
│ │ ├── facts.ignore.js
│ │ ├── match.ignore.js
│ │ └── misc.ignore.js
│ ├── hmm.js
│ ├── one/
│ │ ├── _lib.js
│ │ ├── cache/
│ │ │ ├── cache.test.js
│ │ │ ├── keep-cache.test.js
│ │ │ └── offset.test.js
│ │ ├── change/
│ │ │ ├── append.test.js
│ │ │ ├── case.test.js
│ │ │ ├── concat.test.js
│ │ │ ├── fork.ignore.js
│ │ │ ├── hyphenate.test.js
│ │ │ ├── insert.test.js
│ │ │ ├── join.test.js
│ │ │ ├── loop-mutate.test.js
│ │ │ ├── prepend.test.js
│ │ │ ├── reindex.test.js
│ │ │ ├── remove.test.js
│ │ │ ├── replace-sub.test.js
│ │ │ ├── split.test.js
│ │ │ └── splitOn.test.js
│ │ ├── lexicon/
│ │ │ └── lexicon.test.js
│ │ ├── lookup/
│ │ │ ├── lookup-long.test.js
│ │ │ └── lookup.test.js
│ │ ├── match/
│ │ │ ├── doc-match.test.js
│ │ │ ├── encoding.test.js
│ │ │ ├── fuzzy.test.js
│ │ │ ├── if.test.js
│ │ │ ├── lookaround.test.js
│ │ │ ├── match-method.test.js
│ │ │ ├── named-silent.test.js
│ │ │ ├── negative.test.js
│ │ │ ├── punctuation-match.test.js
│ │ │ ├── regex.test.js
│ │ │ ├── sweep-not.test.js
│ │ │ ├── sweep.test.js
│ │ │ └── syntax.test.js
│ │ ├── match.test.js
│ │ ├── misc/
│ │ │ ├── freeze.test.js
│ │ │ ├── inputs.test.js
│ │ │ ├── isFull.test.js
│ │ │ ├── loops.test.js
│ │ │ ├── misc.test.js
│ │ │ ├── pointer.test.js
│ │ │ ├── random.test.js
│ │ │ ├── reservedwords.test.js
│ │ │ ├── safe-contractions.test.js
│ │ │ ├── slash.test.js
│ │ │ ├── sort.test.js
│ │ │ ├── typeahead.test.js
│ │ │ ├── unicode.test.js
│ │ │ └── whitespace.test.js
│ │ ├── miss.test.js
│ │ ├── output/
│ │ │ ├── hash.test.js
│ │ │ └── html.test.js
│ │ ├── pointers/
│ │ │ ├── complement.test.js
│ │ │ ├── difference.test.js
│ │ │ ├── intersection.test.js
│ │ │ └── union.test.js
│ │ └── tokenize/
│ │ ├── hyphen-matrix.test.js
│ │ ├── hyphens.test.js
│ │ ├── punctuation.test.js
│ │ ├── sentence-split.test.js
│ │ └── term-split.test.js
│ ├── three/
│ │ ├── _lib.js
│ │ ├── acronym.test.js
│ │ ├── adjectives/
│ │ │ ├── adj-adv.test.js
│ │ │ ├── adj-noun.test.js
│ │ │ ├── adjectives.test.js
│ │ │ ├── comparative.test.js
│ │ │ └── superlative.test.js
│ │ ├── api.test.js
│ │ ├── chunker/
│ │ │ ├── chunks.ignore.js
│ │ │ └── clauses.test.js
│ │ ├── clause.test.js
│ │ ├── coreference/
│ │ │ ├── base-coref.ignore.js
│ │ │ ├── more.ignore.js
│ │ │ └── tricky-coref.ignore.js
│ │ ├── full-api.test.js
│ │ ├── fuzz.test.js
│ │ ├── hashTags.test.js
│ │ ├── json-three.test.js
│ │ ├── match.test.js
│ │ ├── misc.test.js
│ │ ├── miss.test.js
│ │ ├── normalize/
│ │ │ ├── normalize-custom.test.js
│ │ │ ├── normalize-methods.test.js
│ │ │ └── normalize-preset.test.js
│ │ ├── nouns/
│ │ │ ├── adjectives.test.js
│ │ │ ├── isPlural.test.js
│ │ │ ├── noun-find.test.js
│ │ │ ├── parse.test.js
│ │ │ ├── toPlural.test.js
│ │ │ └── toSingular.test.js
│ │ ├── numbers/
│ │ │ ├── backlog/
│ │ │ │ ├── agreement.ignore.js
│ │ │ │ ├── conversion.ignore.js
│ │ │ │ ├── money.ignore.js
│ │ │ │ └── overlap.ignore.js
│ │ │ ├── bigNumber.test.js
│ │ │ ├── fractions.test.js
│ │ │ ├── misc.test.js
│ │ │ ├── number-parse.test.js
│ │ │ ├── percent.test.js
│ │ │ ├── prefix.test.js
│ │ │ ├── toCardinal.test.js
│ │ │ ├── toText.test.js
│ │ │ ├── units.test.js
│ │ │ └── value.test.js
│ │ ├── parentheses.test.js
│ │ ├── people/
│ │ │ ├── gender.test.js
│ │ │ ├── people-parse.test.js
│ │ │ └── people.test.js
│ │ ├── places.test.js
│ │ ├── plugin.test.js
│ │ ├── possessives.test.js
│ │ ├── quotations.test.js
│ │ ├── redact.test.js
│ │ ├── sentences/
│ │ │ ├── debullet.test.js
│ │ │ ├── isQuestion.test.js
│ │ │ ├── misc-conjugate.test.js
│ │ │ ├── misc.test.js
│ │ │ ├── negative.test.js
│ │ │ ├── sentence-participle.ignore.js
│ │ │ ├── sentence.test.js
│ │ │ ├── svo.test.js
│ │ │ ├── tense.test.js
│ │ │ ├── toFuture.test.js
│ │ │ ├── toGerund.ignore.js
│ │ │ ├── toPast.test.js
│ │ │ └── toPresent.test.js
│ │ ├── setTag.test.js
│ │ ├── slashes.test.js
│ │ ├── subsets.test.js
│ │ ├── sweep-tag.test.js
│ │ ├── text-three.test.js
│ │ ├── topics.test.js
│ │ └── verbs/
│ │ ├── auxiliary.test.js
│ │ ├── conjugate.test.js
│ │ ├── imperative.test.js
│ │ ├── isplural.test.js
│ │ ├── misc.test.js
│ │ ├── parse.test.js
│ │ ├── parts.test.js
│ │ ├── phrasal.test.js
│ │ ├── phrasals.test.js
│ │ ├── subject.test.js
│ │ ├── toFuture.test.js
│ │ ├── toGerund.test.js
│ │ ├── toInfinitive.test.js
│ │ ├── toNegative.test.js
│ │ ├── toPast.test.js
│ │ ├── toPastParticiple.test.js
│ │ ├── toPresent.test.js
│ │ ├── verb-find.test.js
│ │ ├── verb-forms.test.js
│ │ └── verb-root.test.js
│ └── two/
│ ├── _backlog.js
│ ├── _lib.js
│ ├── contractions/
│ │ ├── contract.test.js
│ │ ├── contraction-match.test.js
│ │ ├── contraction.test.js
│ │ ├── expand.test.js
│ │ ├── had-would.test.js
│ │ ├── is-has-possessive.test.js
│ │ └── match-contraction.test.js
│ ├── freeze/
│ │ ├── freeze.test.js
│ │ ├── internal.test.js
│ │ └── lex.test.js
│ ├── groups/
│ │ ├── named-match.test.js
│ │ └── named-multi.test.js
│ ├── match/
│ │ ├── and.test.js
│ │ ├── blocks.test.js
│ │ ├── capture.test.js
│ │ ├── fancy-match.test.js
│ │ ├── greedy-capture.test.js
│ │ ├── lookahead.test.js
│ │ ├── match-tricky.test.js
│ │ ├── match.test.js
│ │ ├── min-max.test.js
│ │ ├── multiword.test.js
│ │ ├── not.test.js
│ │ ├── or.test.js
│ │ ├── root-match.test.js
│ │ └── soft-match.test.js
│ ├── match.test.js
│ ├── misc/
│ │ ├── canBe.test.js
│ │ ├── confidence.test.js
│ │ ├── constructor.test.js
│ │ ├── emoji.test.js
│ │ ├── lazy.test.js
│ │ ├── misc.test.js
│ │ ├── multiTag.test.js
│ │ ├── remove-more.test.js
│ │ ├── root.test.js
│ │ ├── smoke.test.js
│ │ ├── tagRank.test.js
│ │ ├── term-ids.test.js
│ │ ├── unique.test.js
│ │ └── wordcount.test.js
│ ├── miss.test.js
│ ├── output/
│ │ ├── json.test.js
│ │ ├── out.test.js
│ │ └── text.test.js
│ ├── plugin/
│ │ ├── addTags.ignore.js
│ │ └── addWords.test.js
│ ├── tagger/
│ │ ├── _pennSample.js
│ │ ├── actors.test.js
│ │ ├── inline.test.js
│ │ ├── lexicon.test.js
│ │ ├── multi.test.js
│ │ ├── number-match.test.js
│ │ ├── penn.test.js
│ │ ├── swears.test.js
│ │ ├── topics.test.js
│ │ └── untag.test.js
│ ├── transform/
│ │ ├── clone.test.js
│ │ ├── replace.test.js
│ │ └── swap.test.js
│ └── variables/
│ ├── gerund.test.js
│ ├── org-match.test.js
│ ├── past-adj.test.js
│ ├── person-match.test.js
│ ├── present-noun.test.js
│ └── verb-phrase.test.js
├── three/
│ └── package.json
├── tokenize/
│ └── package.json
├── tsconfig.json
├── two/
│ └── package.json
└── types/
├── misc.d.ts
├── one.d.cts
├── one.d.ts
├── three.d.cts
├── three.d.ts
├── two.d.cts
├── two.d.ts
└── view/
├── one.d.cts
├── one.d.ts
├── three.d.cts
├── three.d.ts
├── two.d.cts
└── two.d.ts
SYMBOL INDEX (1221 symbols across 62 files)
FILE: builds/compromise.js
class View (line 1) | class View{constructor(t,n,r={}){[["document",t],["world",e],["_groups",...
method constructor (line 1) | constructor(t,n,r={}){[["document",t],["world",e],["_groups",r],["_cac...
method docs (line 1) | get docs(){let t=this.document;return this.ptrs&&(t=e.methods.one.getD...
method pointer (line 1) | get pointer(){return this.ptrs}
method methods (line 1) | get methods(){return this.world.methods}
method model (line 1) | get model(){return this.world.model}
method hooks (line 1) | get hooks(){return this.world.hooks}
method isView (line 1) | get isView(){return!0}
method found (line 1) | get found(){return this.docs.length>0}
method length (line 1) | get length(){return this.docs.length}
method fullPointer (line 1) | get fullPointer(){const{docs:e,ptrs:t,document:n}=this,r=t||e.map(((e,...
method update (line 1) | update(e){const t=new View(this.document,e);if(this._cache&&e&&e.lengt...
method toView (line 1) | toView(e){return new View(this.document,e||this.pointer)}
method fromText (line 1) | fromText(e){const{methods:t}=this,n=t.one.tokenize.fromString(e,this.w...
method clone (line 1) | clone(){let e=this.document.slice(0);e=e.map((e=>e.map((e=>((e=Object....
function i (line 1) | function i(e,t){if(a(t))for(const n in t)a(t[n])?(e[n]||Object.assign(e,...
method constructor (line 1) | constructor(e={}){Object.defineProperty(this,"json",{enumerable:!1,value...
method children (line 1) | get children(){return this.json.children}
method id (line 1) | get id(){return this.json.id}
method found (line 1) | get found(){return this.json.id||this.json.children.length>0}
method props (line 1) | props(e={}){let t=this.json.props||{};return"string"==typeof e&&(t[e]=!0...
method get (line 1) | get(e){if(e=Kn(e),!Zn.test(e)){let t=this.json.children.find((t=>t.id===...
method add (line 1) | add(e,t={}){if(Ln(e))return e.forEach((e=>this.add(Kn(e),t))),this;e=Kn(...
method remove (line 1) | remove(e){return e=Kn(e),this.json.children=this.json.children.filter((t...
method nodes (line 1) | nodes(){return Mn(this.json).map((e=>(delete(e=Object.assign({},e)).chil...
method cache (line 1) | cache(){return(e=>{let t=Mn(e,((e,t)=>{e.id&&(e._cache.parents=e._cache....
method list (line 1) | list(){return Mn(this.json)}
method fillDown (line 1) | fillDown(){var e;return e=this.json,Mn(e,((e,t)=>{t.props=((e,t)=>(Objec...
method depth (line 1) | depth(){Qn(this.json);let e=Mn(this.json),t=e.length>1?1:0;return e.forE...
method out (line 1) | out(e){return Qn(this.json),Rn(this.json,e)}
method debug (line 1) | debug(){return Qn(this.json),Rn(this.json,"debug"),this}
class Contractions (line 1) | class Contractions extends e{constructor(e,t,n){super(e,t,n),this.viewTy...
method constructor (line 1) | constructor(e,t,n){super(e,t,n),this.viewType="Contraction"}
method expand (line 1) | expand(){return this.docs.forEach((e=>{const t=ml.test(e[0].text);e.fo...
class Adjectives (line 1) | class Adjectives extends e{constructor(e,t,n){super(e,t,n),this.viewType...
method constructor (line 1) | constructor(e,t,n){super(e,t,n),this.viewType="Adjectives"}
method json (line 1) | json(e={}){const{toAdverb:t,toNoun:n,toSuperlative:r,toComparative:o}=...
method adverbs (line 1) | adverbs(){return this.before("#Adverb+$").concat(this.after("^#Adverb+...
method conjugate (line 1) | conjugate(e){const{toComparative:t,toSuperlative:n,toNoun:r,toAdverb:o...
method toComparative (line 1) | toComparative(e){const{toComparative:t}=this.methods.two.transform.adj...
method toSuperlative (line 1) | toSuperlative(e){const{toSuperlative:t}=this.methods.two.transform.adj...
method toAdverb (line 1) | toAdverb(e){const{toAdverb:t}=this.methods.two.transform.adjective;ret...
method toNoun (line 1) | toNoun(e){const{toNoun:t}=this.methods.two.transform.adjective;return ...
class Adverbs (line 1) | class Adverbs extends e{constructor(e,t,n){super(e,t,n),this.viewType="A...
method constructor (line 1) | constructor(e,t,n){super(e,t,n),this.viewType="Adverbs"}
method conjugate (line 1) | conjugate(e){return this.getNth(e).map((e=>{const t=function(e){return...
method json (line 1) | json(e={}){const t=this.methods.two.transform.adjective.fromAdverb;ret...
class Chunks (line 1) | class Chunks extends e{constructor(e,t,n){super(e,t,n),this.viewType="Ch...
method constructor (line 1) | constructor(e,t,n){super(e,t,n),this.viewType="Chunks"}
method isVerb (line 1) | isVerb(){return this.filter((e=>e.has("<Verb>")))}
method isNoun (line 1) | isNoun(){return this.filter((e=>e.has("<Noun>")))}
method isAdjective (line 1) | isAdjective(){return this.filter((e=>e.has("<Adjective>")))}
method isPivot (line 1) | isPivot(){return this.filter((e=>e.has("<Pivot>")))}
method debug (line 1) | debug(){return this.toView().debug("chunks"),this}
method update (line 1) | update(e){const t=new Chunks(this.document,e);return t._cache=this._ca...
class Parentheses (line 1) | class Parentheses extends e{constructor(e,t,n){super(e,t,n),this.viewTyp...
method constructor (line 1) | constructor(e,t,n){super(e,t,n),this.viewType="Possessives"}
method strip (line 1) | strip(){return function(e){return e.docs.forEach((e=>{e[0].pre=e[0].pr...
class Quotations (line 1) | class Quotations extends e{constructor(e,t,n){super(e,t,n),this.viewType...
method constructor (line 1) | constructor(e,t,n){super(e,t,n),this.viewType="Possessives"}
method strip (line 1) | strip(){return function(e){e.docs.forEach((e=>{e[0].pre=e[0].pre.repla...
class Acronyms (line 1) | class Acronyms extends e{constructor(e,t,n){super(e,t,n),this.viewType="...
method constructor (line 1) | constructor(e,t,n){super(e,t,n),this.viewType="Acronyms"}
method strip (line 1) | strip(){return this.docs.forEach((e=>{e.forEach((e=>{e.text=e.text.rep...
method addPeriods (line 1) | addPeriods(){return this.docs.forEach((e=>{e.forEach((e=>{e.text=e.tex...
class Possessives (line 1) | class Possessives extends e{constructor(e,t,n){super(e,t,n),this.viewTyp...
method constructor (line 1) | constructor(e,t,n){super(e,t,n),this.viewType="Possessives"}
method strip (line 1) | strip(){return this.docs.forEach((e=>{e.forEach((e=>{e.text=e.text.rep...
class Slashes (line 1) | class Slashes extends e{constructor(e,t,n){super(e,t,n),this.viewType="S...
method constructor (line 1) | constructor(e,t,n){super(e,t,n),this.viewType="Slashes"}
method split (line 1) | split(){return this.map((e=>{const t=e.text().split(pu);return(e=e.rep...
class Nouns (line 1) | class Nouns extends e{constructor(e,t,n){super(e,t,n),this.viewType="Nou...
method constructor (line 1) | constructor(e,t,n){super(e,t,n),this.viewType="Nouns"}
method parse (line 1) | parse(e){return this.getNth(e).map(xu)}
method json (line 1) | json(e){const t="object"==typeof e?e:{};return this.getNth(e).map((e=>...
method conjugate (line 1) | conjugate(e){const t=this.world.methods.two.transform.noun;return this...
method isPlural (line 1) | isPlural(e){const t=this.filter((e=>xu(e).isPlural));return t.getNth(e)}
method isSingular (line 1) | isSingular(e){const t=this.filter((e=>!xu(e).isPlural));return t.getNt...
method adjectives (line 1) | adjectives(e){let t=this.update([]);return this.forEach((e=>{const n=x...
method toPlural (line 1) | toPlural(e){return this.getNth(e).map((e=>function(e,t){if(!0===t.isPl...
method toSingular (line 1) | toSingular(e){return this.getNth(e).map((e=>function(e,t){if(!1===t.is...
method update (line 1) | update(e){const t=new Nouns(this.document,e);return t._cache=this._cac...
class Fractions (line 1) | class Fractions extends e{constructor(e,t,n){super(e,t,n),this.viewType=...
method constructor (line 1) | constructor(e,t,n){super(e,t,n),this.viewType="Fractions"}
method parse (line 1) | parse(e){return this.getNth(e).map(qu)}
method get (line 1) | get(e){return this.getNth(e).map(qu)}
method json (line 1) | json(e){return this.getNth(e).map((t=>{const n=t.toView().json(e)[0],r...
method toDecimal (line 1) | toDecimal(e){return this.getNth(e).forEach((e=>{const{decimal:t}=qu(e)...
method toFraction (line 1) | toFraction(e){return this.getNth(e).forEach((e=>{const t=qu(e);if(t&&"...
method toOrdinal (line 1) | toOrdinal(e){return this.getNth(e).forEach((e=>{let t=function(e){if(!...
method toCardinal (line 1) | toCardinal(e){return this.getNth(e).forEach((e=>{const t=function(e){r...
method toPercentage (line 1) | toPercentage(e){return this.getNth(e).forEach((e=>{const{decimal:t}=qu...
class Numbers (line 1) | class Numbers extends e{constructor(e,t,n){super(e,t,n),this.viewType="N...
method constructor (line 1) | constructor(e,t,n){super(e,t,n),this.viewType="Numbers"}
method parse (line 1) | parse(e){return this.getNth(e).map(oc)}
method get (line 1) | get(e){return this.getNth(e).map(oc).map((e=>e.num))}
method json (line 1) | json(e){const t="object"==typeof e?e:{};return this.getNth(e).map((e=>...
method units (line 1) | units(){return this.growRight("#Unit").match("#Unit$")}
method isUnit (line 1) | isUnit(e){return function(e,t={}){return t=uc(t),e.filter((e=>{const{u...
method isOrdinal (line 1) | isOrdinal(){return this.if("#Ordinal")}
method isCardinal (line 1) | isCardinal(){return this.if("#Cardinal")}
method toNumber (line 1) | toNumber(){const e=this.map((e=>{if(!this.has("#TextValue"))return e;c...
method toLocaleString (line 1) | toLocaleString(){return this.forEach((e=>{const t=oc(e);if(null===t.nu...
method toText (line 1) | toText(){const e=this.map((e=>{if(e.has("#TextValue"))return e;const t...
method toCardinal (line 1) | toCardinal(){const e=this.map((e=>{if(!e.has("#Ordinal"))return e;cons...
method toOrdinal (line 1) | toOrdinal(){const e=this.map((e=>{if(e.has("#Ordinal"))return e;const ...
method isEqual (line 1) | isEqual(e){return this.filter((t=>oc(t).num===e))}
method greaterThan (line 1) | greaterThan(e){return this.filter((t=>oc(t).num>e))}
method lessThan (line 1) | lessThan(e){return this.filter((t=>oc(t).num<e))}
method between (line 1) | between(e,t){return this.filter((n=>{const r=oc(n).num;return r>e&&r<t...
method set (line 1) | set(e){if(void 0===e)return this;"string"==typeof e&&(e=oc(e).num);con...
method add (line 1) | add(e){if(!e)return this;"string"==typeof e&&(e=oc(e).num);const t=thi...
method subtract (line 1) | subtract(e,t){return this.add(-1*e,t)}
method increment (line 1) | increment(e){return this.add(1,e)}
method decrement (line 1) | decrement(e){return this.add(-1,e)}
method update (line 1) | update(e){const t=new Numbers(this.document,e);return t._cache=this._c...
class Sentences (line 1) | class Sentences extends e{constructor(e,t,n){super(e,t,n),this.viewType=...
method constructor (line 1) | constructor(e,t,n){super(e,t,n),this.viewType="Sentences"}
method json (line 1) | json(e={}){return this.map((t=>{const n=t.toView().json(e)[0]||{},{sub...
method toPastTense (line 1) | toPastTense(e){return this.getNth(e).map((e=>(fc(e),function(e){let t=...
method toPresentTense (line 1) | toPresentTense(e){return this.getNth(e).map((e=>(fc(e),function(e){let...
method toFutureTense (line 1) | toFutureTense(e){return this.getNth(e).map((e=>(fc(e),e=function(e){le...
method toInfinitive (line 1) | toInfinitive(e){return this.getNth(e).map((e=>(fc(e),function(e){retur...
method toNegative (line 1) | toNegative(e){return this.getNth(e).map((e=>(fc(e),function(e){return ...
method toPositive (line 1) | toPositive(e){return this.getNth(e).map((e=>(fc(e),function(e){return ...
method isQuestion (line 1) | isQuestion(e){return this.questions(e)}
method isExclamation (line 1) | isExclamation(e){const t=this.filter((e=>e.lastTerm().has("@hasExclama...
method isStatement (line 1) | isStatement(e){const t=this.filter((e=>!e.isExclamation().found&&!e.is...
method update (line 1) | update(e){const t=new Sentences(this.document,e);return t._cache=this....
class People (line 1) | class People extends e{constructor(e,t,n){super(e,t,n),this.viewType="Pe...
method constructor (line 1) | constructor(e,t,n){super(e,t,n),this.viewType="People"}
method parse (line 1) | parse(e){return this.getNth(e).map(vc)}
method json (line 1) | json(e){const t="object"==typeof e?e:{};return this.getNth(e).map((e=>...
method presumedMale (line 1) | presumedMale(){return this.filter((e=>e.has("(#MaleName|mr|mister|sr|j...
method presumedFemale (line 1) | presumedFemale(){return this.filter((e=>e.has("(#FemaleName|mrs|miss|q...
method update (line 1) | update(e){const t=new People(this.document,e);return t._cache=this._ca...
class Verbs (line 1) | class Verbs extends e{constructor(e,t,n){super(e,t,n),this.viewType="Ver...
method constructor (line 1) | constructor(e,t,n){super(e,t,n),this.viewType="Verbs"}
method parse (line 1) | parse(e){return this.getNth(e).map(Tc)}
method json (line 1) | json(e,t){const n=this.getNth(t).map((t=>{const n=t.toView().json(e)[0...
method subjects (line 1) | subjects(e){return this.getNth(e).map((e=>(Tc(e),Kc(e).subject)))}
method adverbs (line 1) | adverbs(e){return this.getNth(e).map((e=>e.match("#Adverb")))}
method isSingular (line 1) | isSingular(e){return this.getNth(e).filter((e=>!0!==Kc(e).plural))}
method isPlural (line 1) | isPlural(e){return this.getNth(e).filter((e=>!0===Kc(e).plural))}
method isImperative (line 1) | isImperative(e){return this.getNth(e).filter((e=>e.has("#Imperative")))}
method toInfinitive (line 1) | toInfinitive(e){return this.getNth(e).map((e=>{const t=Tc(e);return fu...
method toPresentTense (line 1) | toPresentTense(e){return this.getNth(e).map((e=>{const t=Tc(e),n=$c(e,...
method toPastTense (line 1) | toPastTense(e){return this.getNth(e).map((e=>{const t=Tc(e),n=$c(e,t);...
method toFutureTense (line 1) | toFutureTense(e){return this.getNth(e).map((e=>{const t=Tc(e),n=$c(e,t...
method toGerund (line 1) | toGerund(e){return this.getNth(e).map((e=>{const t=Tc(e),n=$c(e,t);ret...
method toPastParticiple (line 1) | toPastParticiple(e){return this.getNth(e).map((e=>{const t=Tc(e),n=$c(...
method conjugate (line 1) | conjugate(e){const{conjugate:t,toInfinitive:n}=this.world.methods.two....
method isNegative (line 1) | isNegative(){return this.if("#Negative")}
method isPositive (line 1) | isPositive(){return this.ifNo("#Negative")}
method toPositive (line 1) | toPositive(){const e=this.match("do not #Verb");return e.found&&e.remo...
method toNegative (line 1) | toNegative(e){return this.getNth(e).map((e=>{const t=Tc(e);return func...
method update (line 1) | update(e){const t=new Verbs(this.document,e);return t._cache=this._cac...
class Pronouns (line 1) | class Pronouns extends e{constructor(e,t,n){super(e,t,n),this.viewType="...
method constructor (line 1) | constructor(e,t,n){super(e,t,n),this.viewType="Pronouns"}
method hasReference (line 1) | hasReference(){return this.compute("coreference"),this.filter((e=>e.do...
method refersTo (line 1) | refersTo(){return this.compute("coreference"),this.map((e=>{if(!e.foun...
method update (line 1) | update(e){const t=new Pronouns(this.document,e);return t._cache=this._...
FILE: builds/one/compromise-one.cjs
class View (line 1) | class View{constructor(e,n,o={}){[["document",e],["world",t],["_groups",...
method constructor (line 1) | constructor(e,n,o={}){[["document",e],["world",t],["_groups",o],["_cac...
method docs (line 1) | get docs(){let e=this.document;return this.ptrs&&(e=t.methods.one.getD...
method pointer (line 1) | get pointer(){return this.ptrs}
method methods (line 1) | get methods(){return this.world.methods}
method model (line 1) | get model(){return this.world.model}
method hooks (line 1) | get hooks(){return this.world.hooks}
method isView (line 1) | get isView(){return!0}
method found (line 1) | get found(){return this.docs.length>0}
method length (line 1) | get length(){return this.docs.length}
method fullPointer (line 1) | get fullPointer(){const{docs:t,ptrs:e,document:n}=this,o=e||t.map(((t,...
method update (line 1) | update(t){const e=new View(this.document,t);if(this._cache&&t&&t.lengt...
method toView (line 1) | toView(t){return new View(this.document,t||this.pointer)}
method fromText (line 1) | fromText(t){const{methods:e}=this,n=e.one.tokenize.fromString(t,this.w...
method clone (line 1) | clone(){let t=this.document.slice(0);t=t.map((t=>t.map((t=>((t=Object....
function i (line 1) | function i(t,e){if(s(e))for(const n in e)s(e[n])?(t[n]||Object.assign(t,...
class g (line 1) | class g{constructor(t={}){Object.defineProperty(this,"json",{enumerable:...
method constructor (line 1) | constructor(t={}){Object.defineProperty(this,"json",{enumerable:!1,val...
method children (line 1) | get children(){return this.json.children}
method id (line 1) | get id(){return this.json.id}
method found (line 1) | get found(){return this.json.id||this.json.children.length>0}
method props (line 1) | props(t={}){let e=this.json.props||{};return"string"==typeof t&&(e[t]=...
method get (line 1) | get(t){if(t=Un(t),!Kn.test(t)){let e=this.json.children.find((e=>e.id=...
method add (line 1) | add(t,e={}){if(Mn(t))return t.forEach((t=>this.add(Un(t),e))),this;t=U...
method remove (line 1) | remove(t){return t=Un(t),this.json.children=this.json.children.filter(...
method nodes (line 1) | nodes(){return Dn(this.json).map((t=>(delete(t=Object.assign({},t)).ch...
method cache (line 1) | cache(){return(t=>{let e=Dn(t,((t,e)=>{t.id&&(t._cache.parents=t._cach...
method list (line 1) | list(){return Dn(this.json)}
method fillDown (line 1) | fillDown(){var t;return t=this.json,Dn(t,((t,e)=>{e.props=((t,e)=>(Obj...
method depth (line 1) | depth(){Zn(this.json);let t=Dn(this.json),e=t.length>1?1:0;return t.fo...
method out (line 1) | out(t){return Zn(this.json),Hn(this.json,t)}
method debug (line 1) | debug(){return Zn(this.json),Hn(this.json,"debug"),this}
FILE: builds/one/compromise-one.mjs
class View (line 1) | class View{constructor(e,n,o={}){[["document",e],["world",t],["_groups",...
method constructor (line 1) | constructor(e,n,o={}){[["document",e],["world",t],["_groups",o],["_cac...
method docs (line 1) | get docs(){let e=this.document;return this.ptrs&&(e=t.methods.one.getD...
method pointer (line 1) | get pointer(){return this.ptrs}
method methods (line 1) | get methods(){return this.world.methods}
method model (line 1) | get model(){return this.world.model}
method hooks (line 1) | get hooks(){return this.world.hooks}
method isView (line 1) | get isView(){return!0}
method found (line 1) | get found(){return this.docs.length>0}
method length (line 1) | get length(){return this.docs.length}
method fullPointer (line 1) | get fullPointer(){const{docs:t,ptrs:e,document:n}=this,o=e||t.map(((t,...
method update (line 1) | update(t){const e=new View(this.document,t);if(this._cache&&t&&t.lengt...
method toView (line 1) | toView(t){return new View(this.document,t||this.pointer)}
method fromText (line 1) | fromText(t){const{methods:e}=this,n=e.one.tokenize.fromString(t,this.w...
method clone (line 1) | clone(){let t=this.document.slice(0);t=t.map((t=>t.map((t=>((t=Object....
function i (line 1) | function i(t,e){if(s(e))for(const n in e)s(e[n])?(t[n]||Object.assign(t,...
class g (line 1) | class g{constructor(t={}){Object.defineProperty(this,"json",{enumerable:...
method constructor (line 1) | constructor(t={}){Object.defineProperty(this,"json",{enumerable:!1,val...
method children (line 1) | get children(){return this.json.children}
method id (line 1) | get id(){return this.json.id}
method found (line 1) | get found(){return this.json.id||this.json.children.length>0}
method props (line 1) | props(t={}){let e=this.json.props||{};return"string"==typeof t&&(e[t]=...
method get (line 1) | get(t){if(t=Un(t),!Kn.test(t)){let e=this.json.children.find((e=>e.id=...
method add (line 1) | add(t,e={}){if(Mn(t))return t.forEach((t=>this.add(Un(t),e))),this;t=U...
method remove (line 1) | remove(t){return t=Un(t),this.json.children=this.json.children.filter(...
method nodes (line 1) | nodes(){return Dn(this.json).map((t=>(delete(t=Object.assign({},t)).ch...
method cache (line 1) | cache(){return(t=>{let e=Dn(t,((t,e)=>{t.id&&(t._cache.parents=t._cach...
method list (line 1) | list(){return Dn(this.json)}
method fillDown (line 1) | fillDown(){var t;return t=this.json,Dn(t,((t,e)=>{e.props=((t,e)=>(Obj...
method depth (line 1) | depth(){Zn(this.json);let t=Dn(this.json),e=t.length>1?1:0;return t.fo...
method out (line 1) | out(t){return Zn(this.json),Hn(this.json,t)}
method debug (line 1) | debug(){return Zn(this.json),Hn(this.json,"debug"),this}
FILE: builds/three/compromise-three.cjs
class View (line 1) | class View{constructor(t,n,r={}){[["document",t],["world",e],["_groups",...
method constructor (line 1) | constructor(t,n,r={}){[["document",t],["world",e],["_groups",r],["_cac...
method docs (line 1) | get docs(){let t=this.document;return this.ptrs&&(t=e.methods.one.getD...
method pointer (line 1) | get pointer(){return this.ptrs}
method methods (line 1) | get methods(){return this.world.methods}
method model (line 1) | get model(){return this.world.model}
method hooks (line 1) | get hooks(){return this.world.hooks}
method isView (line 1) | get isView(){return!0}
method found (line 1) | get found(){return this.docs.length>0}
method length (line 1) | get length(){return this.docs.length}
method fullPointer (line 1) | get fullPointer(){const{docs:e,ptrs:t,document:n}=this,r=t||e.map(((e,...
method update (line 1) | update(e){const t=new View(this.document,e);if(this._cache&&e&&e.lengt...
method toView (line 1) | toView(e){return new View(this.document,e||this.pointer)}
method fromText (line 1) | fromText(e){const{methods:t}=this,n=t.one.tokenize.fromString(e,this.w...
method clone (line 1) | clone(){let e=this.document.slice(0);e=e.map((e=>e.map((e=>((e=Object....
function i (line 1) | function i(e,t){if(a(t))for(const n in t)a(t[n])?(e[n]||Object.assign(e,...
method constructor (line 1) | constructor(e={}){Object.defineProperty(this,"json",{enumerable:!1,value...
method children (line 1) | get children(){return this.json.children}
method id (line 1) | get id(){return this.json.id}
method found (line 1) | get found(){return this.json.id||this.json.children.length>0}
method props (line 1) | props(e={}){let t=this.json.props||{};return"string"==typeof e&&(t[e]=!0...
method get (line 1) | get(e){if(e=Kn(e),!Zn.test(e)){let t=this.json.children.find((t=>t.id===...
method add (line 1) | add(e,t={}){if(Ln(e))return e.forEach((e=>this.add(Kn(e),t))),this;e=Kn(...
method remove (line 1) | remove(e){return e=Kn(e),this.json.children=this.json.children.filter((t...
method nodes (line 1) | nodes(){return Mn(this.json).map((e=>(delete(e=Object.assign({},e)).chil...
method cache (line 1) | cache(){return(e=>{let t=Mn(e,((e,t)=>{e.id&&(e._cache.parents=e._cache....
method list (line 1) | list(){return Mn(this.json)}
method fillDown (line 1) | fillDown(){var e;return e=this.json,Mn(e,((e,t)=>{t.props=((e,t)=>(Objec...
method depth (line 1) | depth(){Qn(this.json);let e=Mn(this.json),t=e.length>1?1:0;return e.forE...
method out (line 1) | out(e){return Qn(this.json),Rn(this.json,e)}
method debug (line 1) | debug(){return Qn(this.json),Rn(this.json,"debug"),this}
class Contractions (line 1) | class Contractions extends e{constructor(e,t,n){super(e,t,n),this.viewTy...
method constructor (line 1) | constructor(e,t,n){super(e,t,n),this.viewType="Contraction"}
method expand (line 1) | expand(){return this.docs.forEach((e=>{const t=ml.test(e[0].text);e.fo...
class Adjectives (line 1) | class Adjectives extends e{constructor(e,t,n){super(e,t,n),this.viewType...
method constructor (line 1) | constructor(e,t,n){super(e,t,n),this.viewType="Adjectives"}
method json (line 1) | json(e={}){const{toAdverb:t,toNoun:n,toSuperlative:r,toComparative:o}=...
method adverbs (line 1) | adverbs(){return this.before("#Adverb+$").concat(this.after("^#Adverb+...
method conjugate (line 1) | conjugate(e){const{toComparative:t,toSuperlative:n,toNoun:r,toAdverb:o...
method toComparative (line 1) | toComparative(e){const{toComparative:t}=this.methods.two.transform.adj...
method toSuperlative (line 1) | toSuperlative(e){const{toSuperlative:t}=this.methods.two.transform.adj...
method toAdverb (line 1) | toAdverb(e){const{toAdverb:t}=this.methods.two.transform.adjective;ret...
method toNoun (line 1) | toNoun(e){const{toNoun:t}=this.methods.two.transform.adjective;return ...
class Adverbs (line 1) | class Adverbs extends e{constructor(e,t,n){super(e,t,n),this.viewType="A...
method constructor (line 1) | constructor(e,t,n){super(e,t,n),this.viewType="Adverbs"}
method conjugate (line 1) | conjugate(e){return this.getNth(e).map((e=>{const t=function(e){return...
method json (line 1) | json(e={}){const t=this.methods.two.transform.adjective.fromAdverb;ret...
class Chunks (line 1) | class Chunks extends e{constructor(e,t,n){super(e,t,n),this.viewType="Ch...
method constructor (line 1) | constructor(e,t,n){super(e,t,n),this.viewType="Chunks"}
method isVerb (line 1) | isVerb(){return this.filter((e=>e.has("<Verb>")))}
method isNoun (line 1) | isNoun(){return this.filter((e=>e.has("<Noun>")))}
method isAdjective (line 1) | isAdjective(){return this.filter((e=>e.has("<Adjective>")))}
method isPivot (line 1) | isPivot(){return this.filter((e=>e.has("<Pivot>")))}
method debug (line 1) | debug(){return this.toView().debug("chunks"),this}
method update (line 1) | update(e){const t=new Chunks(this.document,e);return t._cache=this._ca...
class Parentheses (line 1) | class Parentheses extends e{constructor(e,t,n){super(e,t,n),this.viewTyp...
method constructor (line 1) | constructor(e,t,n){super(e,t,n),this.viewType="Possessives"}
method strip (line 1) | strip(){return function(e){return e.docs.forEach((e=>{e[0].pre=e[0].pr...
class Quotations (line 1) | class Quotations extends e{constructor(e,t,n){super(e,t,n),this.viewType...
method constructor (line 1) | constructor(e,t,n){super(e,t,n),this.viewType="Possessives"}
method strip (line 1) | strip(){return function(e){e.docs.forEach((e=>{e[0].pre=e[0].pre.repla...
class Acronyms (line 1) | class Acronyms extends e{constructor(e,t,n){super(e,t,n),this.viewType="...
method constructor (line 1) | constructor(e,t,n){super(e,t,n),this.viewType="Acronyms"}
method strip (line 1) | strip(){return this.docs.forEach((e=>{e.forEach((e=>{e.text=e.text.rep...
method addPeriods (line 1) | addPeriods(){return this.docs.forEach((e=>{e.forEach((e=>{e.text=e.tex...
class Possessives (line 1) | class Possessives extends e{constructor(e,t,n){super(e,t,n),this.viewTyp...
method constructor (line 1) | constructor(e,t,n){super(e,t,n),this.viewType="Possessives"}
method strip (line 1) | strip(){return this.docs.forEach((e=>{e.forEach((e=>{e.text=e.text.rep...
class Slashes (line 1) | class Slashes extends e{constructor(e,t,n){super(e,t,n),this.viewType="S...
method constructor (line 1) | constructor(e,t,n){super(e,t,n),this.viewType="Slashes"}
method split (line 1) | split(){return this.map((e=>{const t=e.text().split(pu);return(e=e.rep...
class Nouns (line 1) | class Nouns extends e{constructor(e,t,n){super(e,t,n),this.viewType="Nou...
method constructor (line 1) | constructor(e,t,n){super(e,t,n),this.viewType="Nouns"}
method parse (line 1) | parse(e){return this.getNth(e).map(xu)}
method json (line 1) | json(e){const t="object"==typeof e?e:{};return this.getNth(e).map((e=>...
method conjugate (line 1) | conjugate(e){const t=this.world.methods.two.transform.noun;return this...
method isPlural (line 1) | isPlural(e){const t=this.filter((e=>xu(e).isPlural));return t.getNth(e)}
method isSingular (line 1) | isSingular(e){const t=this.filter((e=>!xu(e).isPlural));return t.getNt...
method adjectives (line 1) | adjectives(e){let t=this.update([]);return this.forEach((e=>{const n=x...
method toPlural (line 1) | toPlural(e){return this.getNth(e).map((e=>function(e,t){if(!0===t.isPl...
method toSingular (line 1) | toSingular(e){return this.getNth(e).map((e=>function(e,t){if(!1===t.is...
method update (line 1) | update(e){const t=new Nouns(this.document,e);return t._cache=this._cac...
class Fractions (line 1) | class Fractions extends e{constructor(e,t,n){super(e,t,n),this.viewType=...
method constructor (line 1) | constructor(e,t,n){super(e,t,n),this.viewType="Fractions"}
method parse (line 1) | parse(e){return this.getNth(e).map(qu)}
method get (line 1) | get(e){return this.getNth(e).map(qu)}
method json (line 1) | json(e){return this.getNth(e).map((t=>{const n=t.toView().json(e)[0],r...
method toDecimal (line 1) | toDecimal(e){return this.getNth(e).forEach((e=>{const{decimal:t}=qu(e)...
method toFraction (line 1) | toFraction(e){return this.getNth(e).forEach((e=>{const t=qu(e);if(t&&"...
method toOrdinal (line 1) | toOrdinal(e){return this.getNth(e).forEach((e=>{let t=function(e){if(!...
method toCardinal (line 1) | toCardinal(e){return this.getNth(e).forEach((e=>{const t=function(e){r...
method toPercentage (line 1) | toPercentage(e){return this.getNth(e).forEach((e=>{const{decimal:t}=qu...
class Numbers (line 1) | class Numbers extends e{constructor(e,t,n){super(e,t,n),this.viewType="N...
method constructor (line 1) | constructor(e,t,n){super(e,t,n),this.viewType="Numbers"}
method parse (line 1) | parse(e){return this.getNth(e).map(oc)}
method get (line 1) | get(e){return this.getNth(e).map(oc).map((e=>e.num))}
method json (line 1) | json(e){const t="object"==typeof e?e:{};return this.getNth(e).map((e=>...
method units (line 1) | units(){return this.growRight("#Unit").match("#Unit$")}
method isUnit (line 1) | isUnit(e){return function(e,t={}){return t=uc(t),e.filter((e=>{const{u...
method isOrdinal (line 1) | isOrdinal(){return this.if("#Ordinal")}
method isCardinal (line 1) | isCardinal(){return this.if("#Cardinal")}
method toNumber (line 1) | toNumber(){const e=this.map((e=>{if(!this.has("#TextValue"))return e;c...
method toLocaleString (line 1) | toLocaleString(){return this.forEach((e=>{const t=oc(e);if(null===t.nu...
method toText (line 1) | toText(){const e=this.map((e=>{if(e.has("#TextValue"))return e;const t...
method toCardinal (line 1) | toCardinal(){const e=this.map((e=>{if(!e.has("#Ordinal"))return e;cons...
method toOrdinal (line 1) | toOrdinal(){const e=this.map((e=>{if(e.has("#Ordinal"))return e;const ...
method isEqual (line 1) | isEqual(e){return this.filter((t=>oc(t).num===e))}
method greaterThan (line 1) | greaterThan(e){return this.filter((t=>oc(t).num>e))}
method lessThan (line 1) | lessThan(e){return this.filter((t=>oc(t).num<e))}
method between (line 1) | between(e,t){return this.filter((n=>{const r=oc(n).num;return r>e&&r<t...
method set (line 1) | set(e){if(void 0===e)return this;"string"==typeof e&&(e=oc(e).num);con...
method add (line 1) | add(e){if(!e)return this;"string"==typeof e&&(e=oc(e).num);const t=thi...
method subtract (line 1) | subtract(e,t){return this.add(-1*e,t)}
method increment (line 1) | increment(e){return this.add(1,e)}
method decrement (line 1) | decrement(e){return this.add(-1,e)}
method update (line 1) | update(e){const t=new Numbers(this.document,e);return t._cache=this._c...
class Sentences (line 1) | class Sentences extends e{constructor(e,t,n){super(e,t,n),this.viewType=...
method constructor (line 1) | constructor(e,t,n){super(e,t,n),this.viewType="Sentences"}
method json (line 1) | json(e={}){return this.map((t=>{const n=t.toView().json(e)[0]||{},{sub...
method toPastTense (line 1) | toPastTense(e){return this.getNth(e).map((e=>(fc(e),function(e){let t=...
method toPresentTense (line 1) | toPresentTense(e){return this.getNth(e).map((e=>(fc(e),function(e){let...
method toFutureTense (line 1) | toFutureTense(e){return this.getNth(e).map((e=>(fc(e),e=function(e){le...
method toInfinitive (line 1) | toInfinitive(e){return this.getNth(e).map((e=>(fc(e),function(e){retur...
method toNegative (line 1) | toNegative(e){return this.getNth(e).map((e=>(fc(e),function(e){return ...
method toPositive (line 1) | toPositive(e){return this.getNth(e).map((e=>(fc(e),function(e){return ...
method isQuestion (line 1) | isQuestion(e){return this.questions(e)}
method isExclamation (line 1) | isExclamation(e){const t=this.filter((e=>e.lastTerm().has("@hasExclama...
method isStatement (line 1) | isStatement(e){const t=this.filter((e=>!e.isExclamation().found&&!e.is...
method update (line 1) | update(e){const t=new Sentences(this.document,e);return t._cache=this....
class People (line 1) | class People extends e{constructor(e,t,n){super(e,t,n),this.viewType="Pe...
method constructor (line 1) | constructor(e,t,n){super(e,t,n),this.viewType="People"}
method parse (line 1) | parse(e){return this.getNth(e).map(vc)}
method json (line 1) | json(e){const t="object"==typeof e?e:{};return this.getNth(e).map((e=>...
method presumedMale (line 1) | presumedMale(){return this.filter((e=>e.has("(#MaleName|mr|mister|sr|j...
method presumedFemale (line 1) | presumedFemale(){return this.filter((e=>e.has("(#FemaleName|mrs|miss|q...
method update (line 1) | update(e){const t=new People(this.document,e);return t._cache=this._ca...
class Verbs (line 1) | class Verbs extends e{constructor(e,t,n){super(e,t,n),this.viewType="Ver...
method constructor (line 1) | constructor(e,t,n){super(e,t,n),this.viewType="Verbs"}
method parse (line 1) | parse(e){return this.getNth(e).map(Tc)}
method json (line 1) | json(e,t){const n=this.getNth(t).map((t=>{const n=t.toView().json(e)[0...
method subjects (line 1) | subjects(e){return this.getNth(e).map((e=>(Tc(e),Kc(e).subject)))}
method adverbs (line 1) | adverbs(e){return this.getNth(e).map((e=>e.match("#Adverb")))}
method isSingular (line 1) | isSingular(e){return this.getNth(e).filter((e=>!0!==Kc(e).plural))}
method isPlural (line 1) | isPlural(e){return this.getNth(e).filter((e=>!0===Kc(e).plural))}
method isImperative (line 1) | isImperative(e){return this.getNth(e).filter((e=>e.has("#Imperative")))}
method toInfinitive (line 1) | toInfinitive(e){return this.getNth(e).map((e=>{const t=Tc(e);return fu...
method toPresentTense (line 1) | toPresentTense(e){return this.getNth(e).map((e=>{const t=Tc(e),n=$c(e,...
method toPastTense (line 1) | toPastTense(e){return this.getNth(e).map((e=>{const t=Tc(e),n=$c(e,t);...
method toFutureTense (line 1) | toFutureTense(e){return this.getNth(e).map((e=>{const t=Tc(e),n=$c(e,t...
method toGerund (line 1) | toGerund(e){return this.getNth(e).map((e=>{const t=Tc(e),n=$c(e,t);ret...
method toPastParticiple (line 1) | toPastParticiple(e){return this.getNth(e).map((e=>{const t=Tc(e),n=$c(...
method conjugate (line 1) | conjugate(e){const{conjugate:t,toInfinitive:n}=this.world.methods.two....
method isNegative (line 1) | isNegative(){return this.if("#Negative")}
method isPositive (line 1) | isPositive(){return this.ifNo("#Negative")}
method toPositive (line 1) | toPositive(){const e=this.match("do not #Verb");return e.found&&e.remo...
method toNegative (line 1) | toNegative(e){return this.getNth(e).map((e=>{const t=Tc(e);return func...
method update (line 1) | update(e){const t=new Verbs(this.document,e);return t._cache=this._cac...
class Pronouns (line 1) | class Pronouns extends e{constructor(e,t,n){super(e,t,n),this.viewType="...
method constructor (line 1) | constructor(e,t,n){super(e,t,n),this.viewType="Pronouns"}
method hasReference (line 1) | hasReference(){return this.compute("coreference"),this.filter((e=>e.do...
method refersTo (line 1) | refersTo(){return this.compute("coreference"),this.map((e=>{if(!e.foun...
method update (line 1) | update(e){const t=new Pronouns(this.document,e);return t._cache=this._...
FILE: builds/three/compromise-three.mjs
class View (line 1) | class View{constructor(t,n,r={}){[["document",t],["world",e],["_groups",...
method constructor (line 1) | constructor(t,n,r={}){[["document",t],["world",e],["_groups",r],["_cac...
method docs (line 1) | get docs(){let t=this.document;return this.ptrs&&(t=e.methods.one.getD...
method pointer (line 1) | get pointer(){return this.ptrs}
method methods (line 1) | get methods(){return this.world.methods}
method model (line 1) | get model(){return this.world.model}
method hooks (line 1) | get hooks(){return this.world.hooks}
method isView (line 1) | get isView(){return!0}
method found (line 1) | get found(){return this.docs.length>0}
method length (line 1) | get length(){return this.docs.length}
method fullPointer (line 1) | get fullPointer(){const{docs:e,ptrs:t,document:n}=this,r=t||e.map(((e,...
method update (line 1) | update(e){const t=new View(this.document,e);if(this._cache&&e&&e.lengt...
method toView (line 1) | toView(e){return new View(this.document,e||this.pointer)}
method fromText (line 1) | fromText(e){const{methods:t}=this,n=t.one.tokenize.fromString(e,this.w...
method clone (line 1) | clone(){let e=this.document.slice(0);e=e.map((e=>e.map((e=>((e=Object....
function i (line 1) | function i(e,t){if(a(t))for(const n in t)a(t[n])?(e[n]||Object.assign(e,...
method constructor (line 1) | constructor(e={}){Object.defineProperty(this,"json",{enumerable:!1,value...
method children (line 1) | get children(){return this.json.children}
method id (line 1) | get id(){return this.json.id}
method found (line 1) | get found(){return this.json.id||this.json.children.length>0}
method props (line 1) | props(e={}){let t=this.json.props||{};return"string"==typeof e&&(t[e]=!0...
method get (line 1) | get(e){if(e=Kn(e),!Zn.test(e)){let t=this.json.children.find((t=>t.id===...
method add (line 1) | add(e,t={}){if(Ln(e))return e.forEach((e=>this.add(Kn(e),t))),this;e=Kn(...
method remove (line 1) | remove(e){return e=Kn(e),this.json.children=this.json.children.filter((t...
method nodes (line 1) | nodes(){return Mn(this.json).map((e=>(delete(e=Object.assign({},e)).chil...
method cache (line 1) | cache(){return(e=>{let t=Mn(e,((e,t)=>{e.id&&(e._cache.parents=e._cache....
method list (line 1) | list(){return Mn(this.json)}
method fillDown (line 1) | fillDown(){var e;return e=this.json,Mn(e,((e,t)=>{t.props=((e,t)=>(Objec...
method depth (line 1) | depth(){Qn(this.json);let e=Mn(this.json),t=e.length>1?1:0;return e.forE...
method out (line 1) | out(e){return Qn(this.json),Rn(this.json,e)}
method debug (line 1) | debug(){return Qn(this.json),Rn(this.json,"debug"),this}
class Contractions (line 1) | class Contractions extends e{constructor(e,t,n){super(e,t,n),this.viewTy...
method constructor (line 1) | constructor(e,t,n){super(e,t,n),this.viewType="Contraction"}
method expand (line 1) | expand(){return this.docs.forEach((e=>{const t=ml.test(e[0].text);e.fo...
class Adjectives (line 1) | class Adjectives extends e{constructor(e,t,n){super(e,t,n),this.viewType...
method constructor (line 1) | constructor(e,t,n){super(e,t,n),this.viewType="Adjectives"}
method json (line 1) | json(e={}){const{toAdverb:t,toNoun:n,toSuperlative:r,toComparative:o}=...
method adverbs (line 1) | adverbs(){return this.before("#Adverb+$").concat(this.after("^#Adverb+...
method conjugate (line 1) | conjugate(e){const{toComparative:t,toSuperlative:n,toNoun:r,toAdverb:o...
method toComparative (line 1) | toComparative(e){const{toComparative:t}=this.methods.two.transform.adj...
method toSuperlative (line 1) | toSuperlative(e){const{toSuperlative:t}=this.methods.two.transform.adj...
method toAdverb (line 1) | toAdverb(e){const{toAdverb:t}=this.methods.two.transform.adjective;ret...
method toNoun (line 1) | toNoun(e){const{toNoun:t}=this.methods.two.transform.adjective;return ...
class Adverbs (line 1) | class Adverbs extends e{constructor(e,t,n){super(e,t,n),this.viewType="A...
method constructor (line 1) | constructor(e,t,n){super(e,t,n),this.viewType="Adverbs"}
method conjugate (line 1) | conjugate(e){return this.getNth(e).map((e=>{const t=function(e){return...
method json (line 1) | json(e={}){const t=this.methods.two.transform.adjective.fromAdverb;ret...
class Chunks (line 1) | class Chunks extends e{constructor(e,t,n){super(e,t,n),this.viewType="Ch...
method constructor (line 1) | constructor(e,t,n){super(e,t,n),this.viewType="Chunks"}
method isVerb (line 1) | isVerb(){return this.filter((e=>e.has("<Verb>")))}
method isNoun (line 1) | isNoun(){return this.filter((e=>e.has("<Noun>")))}
method isAdjective (line 1) | isAdjective(){return this.filter((e=>e.has("<Adjective>")))}
method isPivot (line 1) | isPivot(){return this.filter((e=>e.has("<Pivot>")))}
method debug (line 1) | debug(){return this.toView().debug("chunks"),this}
method update (line 1) | update(e){const t=new Chunks(this.document,e);return t._cache=this._ca...
class Parentheses (line 1) | class Parentheses extends e{constructor(e,t,n){super(e,t,n),this.viewTyp...
method constructor (line 1) | constructor(e,t,n){super(e,t,n),this.viewType="Possessives"}
method strip (line 1) | strip(){return function(e){return e.docs.forEach((e=>{e[0].pre=e[0].pr...
class Quotations (line 1) | class Quotations extends e{constructor(e,t,n){super(e,t,n),this.viewType...
method constructor (line 1) | constructor(e,t,n){super(e,t,n),this.viewType="Possessives"}
method strip (line 1) | strip(){return function(e){e.docs.forEach((e=>{e[0].pre=e[0].pre.repla...
class Acronyms (line 1) | class Acronyms extends e{constructor(e,t,n){super(e,t,n),this.viewType="...
method constructor (line 1) | constructor(e,t,n){super(e,t,n),this.viewType="Acronyms"}
method strip (line 1) | strip(){return this.docs.forEach((e=>{e.forEach((e=>{e.text=e.text.rep...
method addPeriods (line 1) | addPeriods(){return this.docs.forEach((e=>{e.forEach((e=>{e.text=e.tex...
class Possessives (line 1) | class Possessives extends e{constructor(e,t,n){super(e,t,n),this.viewTyp...
method constructor (line 1) | constructor(e,t,n){super(e,t,n),this.viewType="Possessives"}
method strip (line 1) | strip(){return this.docs.forEach((e=>{e.forEach((e=>{e.text=e.text.rep...
class Slashes (line 1) | class Slashes extends e{constructor(e,t,n){super(e,t,n),this.viewType="S...
method constructor (line 1) | constructor(e,t,n){super(e,t,n),this.viewType="Slashes"}
method split (line 1) | split(){return this.map((e=>{const t=e.text().split(pu);return(e=e.rep...
class Nouns (line 1) | class Nouns extends e{constructor(e,t,n){super(e,t,n),this.viewType="Nou...
method constructor (line 1) | constructor(e,t,n){super(e,t,n),this.viewType="Nouns"}
method parse (line 1) | parse(e){return this.getNth(e).map(xu)}
method json (line 1) | json(e){const t="object"==typeof e?e:{};return this.getNth(e).map((e=>...
method conjugate (line 1) | conjugate(e){const t=this.world.methods.two.transform.noun;return this...
method isPlural (line 1) | isPlural(e){const t=this.filter((e=>xu(e).isPlural));return t.getNth(e)}
method isSingular (line 1) | isSingular(e){const t=this.filter((e=>!xu(e).isPlural));return t.getNt...
method adjectives (line 1) | adjectives(e){let t=this.update([]);return this.forEach((e=>{const n=x...
method toPlural (line 1) | toPlural(e){return this.getNth(e).map((e=>function(e,t){if(!0===t.isPl...
method toSingular (line 1) | toSingular(e){return this.getNth(e).map((e=>function(e,t){if(!1===t.is...
method update (line 1) | update(e){const t=new Nouns(this.document,e);return t._cache=this._cac...
class Fractions (line 1) | class Fractions extends e{constructor(e,t,n){super(e,t,n),this.viewType=...
method constructor (line 1) | constructor(e,t,n){super(e,t,n),this.viewType="Fractions"}
method parse (line 1) | parse(e){return this.getNth(e).map(qu)}
method get (line 1) | get(e){return this.getNth(e).map(qu)}
method json (line 1) | json(e){return this.getNth(e).map((t=>{const n=t.toView().json(e)[0],r...
method toDecimal (line 1) | toDecimal(e){return this.getNth(e).forEach((e=>{const{decimal:t}=qu(e)...
method toFraction (line 1) | toFraction(e){return this.getNth(e).forEach((e=>{const t=qu(e);if(t&&"...
method toOrdinal (line 1) | toOrdinal(e){return this.getNth(e).forEach((e=>{let t=function(e){if(!...
method toCardinal (line 1) | toCardinal(e){return this.getNth(e).forEach((e=>{const t=function(e){r...
method toPercentage (line 1) | toPercentage(e){return this.getNth(e).forEach((e=>{const{decimal:t}=qu...
class Numbers (line 1) | class Numbers extends e{constructor(e,t,n){super(e,t,n),this.viewType="N...
method constructor (line 1) | constructor(e,t,n){super(e,t,n),this.viewType="Numbers"}
method parse (line 1) | parse(e){return this.getNth(e).map(oc)}
method get (line 1) | get(e){return this.getNth(e).map(oc).map((e=>e.num))}
method json (line 1) | json(e){const t="object"==typeof e?e:{};return this.getNth(e).map((e=>...
method units (line 1) | units(){return this.growRight("#Unit").match("#Unit$")}
method isUnit (line 1) | isUnit(e){return function(e,t={}){return t=uc(t),e.filter((e=>{const{u...
method isOrdinal (line 1) | isOrdinal(){return this.if("#Ordinal")}
method isCardinal (line 1) | isCardinal(){return this.if("#Cardinal")}
method toNumber (line 1) | toNumber(){const e=this.map((e=>{if(!this.has("#TextValue"))return e;c...
method toLocaleString (line 1) | toLocaleString(){return this.forEach((e=>{const t=oc(e);if(null===t.nu...
method toText (line 1) | toText(){const e=this.map((e=>{if(e.has("#TextValue"))return e;const t...
method toCardinal (line 1) | toCardinal(){const e=this.map((e=>{if(!e.has("#Ordinal"))return e;cons...
method toOrdinal (line 1) | toOrdinal(){const e=this.map((e=>{if(e.has("#Ordinal"))return e;const ...
method isEqual (line 1) | isEqual(e){return this.filter((t=>oc(t).num===e))}
method greaterThan (line 1) | greaterThan(e){return this.filter((t=>oc(t).num>e))}
method lessThan (line 1) | lessThan(e){return this.filter((t=>oc(t).num<e))}
method between (line 1) | between(e,t){return this.filter((n=>{const r=oc(n).num;return r>e&&r<t...
method set (line 1) | set(e){if(void 0===e)return this;"string"==typeof e&&(e=oc(e).num);con...
method add (line 1) | add(e){if(!e)return this;"string"==typeof e&&(e=oc(e).num);const t=thi...
method subtract (line 1) | subtract(e,t){return this.add(-1*e,t)}
method increment (line 1) | increment(e){return this.add(1,e)}
method decrement (line 1) | decrement(e){return this.add(-1,e)}
method update (line 1) | update(e){const t=new Numbers(this.document,e);return t._cache=this._c...
class Sentences (line 1) | class Sentences extends e{constructor(e,t,n){super(e,t,n),this.viewType=...
method constructor (line 1) | constructor(e,t,n){super(e,t,n),this.viewType="Sentences"}
method json (line 1) | json(e={}){return this.map((t=>{const n=t.toView().json(e)[0]||{},{sub...
method toPastTense (line 1) | toPastTense(e){return this.getNth(e).map((e=>(fc(e),function(e){let t=...
method toPresentTense (line 1) | toPresentTense(e){return this.getNth(e).map((e=>(fc(e),function(e){let...
method toFutureTense (line 1) | toFutureTense(e){return this.getNth(e).map((e=>(fc(e),e=function(e){le...
method toInfinitive (line 1) | toInfinitive(e){return this.getNth(e).map((e=>(fc(e),function(e){retur...
method toNegative (line 1) | toNegative(e){return this.getNth(e).map((e=>(fc(e),function(e){return ...
method toPositive (line 1) | toPositive(e){return this.getNth(e).map((e=>(fc(e),function(e){return ...
method isQuestion (line 1) | isQuestion(e){return this.questions(e)}
method isExclamation (line 1) | isExclamation(e){const t=this.filter((e=>e.lastTerm().has("@hasExclama...
method isStatement (line 1) | isStatement(e){const t=this.filter((e=>!e.isExclamation().found&&!e.is...
method update (line 1) | update(e){const t=new Sentences(this.document,e);return t._cache=this....
class People (line 1) | class People extends e{constructor(e,t,n){super(e,t,n),this.viewType="Pe...
method constructor (line 1) | constructor(e,t,n){super(e,t,n),this.viewType="People"}
method parse (line 1) | parse(e){return this.getNth(e).map(vc)}
method json (line 1) | json(e){const t="object"==typeof e?e:{};return this.getNth(e).map((e=>...
method presumedMale (line 1) | presumedMale(){return this.filter((e=>e.has("(#MaleName|mr|mister|sr|j...
method presumedFemale (line 1) | presumedFemale(){return this.filter((e=>e.has("(#FemaleName|mrs|miss|q...
method update (line 1) | update(e){const t=new People(this.document,e);return t._cache=this._ca...
class Verbs (line 1) | class Verbs extends e{constructor(e,t,n){super(e,t,n),this.viewType="Ver...
method constructor (line 1) | constructor(e,t,n){super(e,t,n),this.viewType="Verbs"}
method parse (line 1) | parse(e){return this.getNth(e).map(Tc)}
method json (line 1) | json(e,t){const n=this.getNth(t).map((t=>{const n=t.toView().json(e)[0...
method subjects (line 1) | subjects(e){return this.getNth(e).map((e=>(Tc(e),Kc(e).subject)))}
method adverbs (line 1) | adverbs(e){return this.getNth(e).map((e=>e.match("#Adverb")))}
method isSingular (line 1) | isSingular(e){return this.getNth(e).filter((e=>!0!==Kc(e).plural))}
method isPlural (line 1) | isPlural(e){return this.getNth(e).filter((e=>!0===Kc(e).plural))}
method isImperative (line 1) | isImperative(e){return this.getNth(e).filter((e=>e.has("#Imperative")))}
method toInfinitive (line 1) | toInfinitive(e){return this.getNth(e).map((e=>{const t=Tc(e);return fu...
method toPresentTense (line 1) | toPresentTense(e){return this.getNth(e).map((e=>{const t=Tc(e),n=$c(e,...
method toPastTense (line 1) | toPastTense(e){return this.getNth(e).map((e=>{const t=Tc(e),n=$c(e,t);...
method toFutureTense (line 1) | toFutureTense(e){return this.getNth(e).map((e=>{const t=Tc(e),n=$c(e,t...
method toGerund (line 1) | toGerund(e){return this.getNth(e).map((e=>{const t=Tc(e),n=$c(e,t);ret...
method toPastParticiple (line 1) | toPastParticiple(e){return this.getNth(e).map((e=>{const t=Tc(e),n=$c(...
method conjugate (line 1) | conjugate(e){const{conjugate:t,toInfinitive:n}=this.world.methods.two....
method isNegative (line 1) | isNegative(){return this.if("#Negative")}
method isPositive (line 1) | isPositive(){return this.ifNo("#Negative")}
method toPositive (line 1) | toPositive(){const e=this.match("do not #Verb");return e.found&&e.remo...
method toNegative (line 1) | toNegative(e){return this.getNth(e).map((e=>{const t=Tc(e);return func...
method update (line 1) | update(e){const t=new Verbs(this.document,e);return t._cache=this._cac...
class Pronouns (line 1) | class Pronouns extends e{constructor(e,t,n){super(e,t,n),this.viewType="...
method constructor (line 1) | constructor(e,t,n){super(e,t,n),this.viewType="Pronouns"}
method hasReference (line 1) | hasReference(){return this.compute("coreference"),this.filter((e=>e.do...
method refersTo (line 1) | refersTo(){return this.compute("coreference"),this.map((e=>{if(!e.foun...
method update (line 1) | update(e){const t=new Pronouns(this.document,e);return t._cache=this._...
FILE: builds/two/compromise-two.cjs
class View (line 1) | class View{constructor(t,n,a={}){[["document",t],["world",e],["_groups",...
method constructor (line 1) | constructor(t,n,a={}){[["document",t],["world",e],["_groups",a],["_cac...
method docs (line 1) | get docs(){let t=this.document;return this.ptrs&&(t=e.methods.one.getD...
method pointer (line 1) | get pointer(){return this.ptrs}
method methods (line 1) | get methods(){return this.world.methods}
method model (line 1) | get model(){return this.world.model}
method hooks (line 1) | get hooks(){return this.world.hooks}
method isView (line 1) | get isView(){return!0}
method found (line 1) | get found(){return this.docs.length>0}
method length (line 1) | get length(){return this.docs.length}
method fullPointer (line 1) | get fullPointer(){const{docs:e,ptrs:t,document:n}=this,a=t||e.map(((e,...
method update (line 1) | update(e){const t=new View(this.document,e);if(this._cache&&e&&e.lengt...
method toView (line 1) | toView(e){return new View(this.document,e||this.pointer)}
method fromText (line 1) | fromText(e){const{methods:t}=this,n=t.one.tokenize.fromString(e,this.w...
method clone (line 1) | clone(){let e=this.document.slice(0);e=e.map((e=>e.map((e=>((e=Object....
function i (line 1) | function i(e,t){if(o(t))for(const n in t)o(t[n])?(e[n]||Object.assign(e,...
method constructor (line 1) | constructor(e={}){Object.defineProperty(this,"json",{enumerable:!1,value...
method children (line 1) | get children(){return this.json.children}
method id (line 1) | get id(){return this.json.id}
method found (line 1) | get found(){return this.json.id||this.json.children.length>0}
method props (line 1) | props(e={}){let t=this.json.props||{};return"string"==typeof e&&(t[e]=!0...
method get (line 1) | get(e){if(e=Mn(e),!Zn.test(e)){let t=this.json.children.find((t=>t.id===...
method add (line 1) | add(e,t={}){if(Ln(e))return e.forEach((e=>this.add(Mn(e),t))),this;e=Mn(...
method remove (line 1) | remove(e){return e=Mn(e),this.json.children=this.json.children.filter((t...
method nodes (line 1) | nodes(){return $n(this.json).map((e=>(delete(e=Object.assign({},e)).chil...
method cache (line 1) | cache(){return(e=>{let t=$n(e,((e,t)=>{e.id&&(e._cache.parents=e._cache....
method list (line 1) | list(){return $n(this.json)}
method fillDown (line 1) | fillDown(){var e;return e=this.json,$n(e,((e,t)=>{t.props=((e,t)=>(Objec...
method depth (line 1) | depth(){Qn(this.json);let e=$n(this.json),t=e.length>1?1:0;return e.forE...
method out (line 1) | out(e){return Qn(this.json),Rn(this.json,e)}
method debug (line 1) | debug(){return Qn(this.json),Rn(this.json,"debug"),this}
class Contractions (line 1) | class Contractions extends e{constructor(e,t,n){super(e,t,n),this.viewTy...
method constructor (line 1) | constructor(e,t,n){super(e,t,n),this.viewType="Contraction"}
method expand (line 1) | expand(){return this.docs.forEach((e=>{const t=ml.test(e[0].text);e.fo...
FILE: builds/two/compromise-two.mjs
class View (line 1) | class View{constructor(t,n,a={}){[["document",t],["world",e],["_groups",...
method constructor (line 1) | constructor(t,n,a={}){[["document",t],["world",e],["_groups",a],["_cac...
method docs (line 1) | get docs(){let t=this.document;return this.ptrs&&(t=e.methods.one.getD...
method pointer (line 1) | get pointer(){return this.ptrs}
method methods (line 1) | get methods(){return this.world.methods}
method model (line 1) | get model(){return this.world.model}
method hooks (line 1) | get hooks(){return this.world.hooks}
method isView (line 1) | get isView(){return!0}
method found (line 1) | get found(){return this.docs.length>0}
method length (line 1) | get length(){return this.docs.length}
method fullPointer (line 1) | get fullPointer(){const{docs:e,ptrs:t,document:n}=this,a=t||e.map(((e,...
method update (line 1) | update(e){const t=new View(this.document,e);if(this._cache&&e&&e.lengt...
method toView (line 1) | toView(e){return new View(this.document,e||this.pointer)}
method fromText (line 1) | fromText(e){const{methods:t}=this,n=t.one.tokenize.fromString(e,this.w...
method clone (line 1) | clone(){let e=this.document.slice(0);e=e.map((e=>e.map((e=>((e=Object....
function i (line 1) | function i(e,t){if(o(t))for(const n in t)o(t[n])?(e[n]||Object.assign(e,...
method constructor (line 1) | constructor(e={}){Object.defineProperty(this,"json",{enumerable:!1,value...
method children (line 1) | get children(){return this.json.children}
method id (line 1) | get id(){return this.json.id}
method found (line 1) | get found(){return this.json.id||this.json.children.length>0}
method props (line 1) | props(e={}){let t=this.json.props||{};return"string"==typeof e&&(t[e]=!0...
method get (line 1) | get(e){if(e=Mn(e),!Zn.test(e)){let t=this.json.children.find((t=>t.id===...
method add (line 1) | add(e,t={}){if(Ln(e))return e.forEach((e=>this.add(Mn(e),t))),this;e=Mn(...
method remove (line 1) | remove(e){return e=Mn(e),this.json.children=this.json.children.filter((t...
method nodes (line 1) | nodes(){return $n(this.json).map((e=>(delete(e=Object.assign({},e)).chil...
method cache (line 1) | cache(){return(e=>{let t=$n(e,((e,t)=>{e.id&&(e._cache.parents=e._cache....
method list (line 1) | list(){return $n(this.json)}
method fillDown (line 1) | fillDown(){var e;return e=this.json,$n(e,((e,t)=>{t.props=((e,t)=>(Objec...
method depth (line 1) | depth(){Qn(this.json);let e=$n(this.json),t=e.length>1?1:0;return e.forE...
method out (line 1) | out(e){return Qn(this.json),Rn(this.json,e)}
method debug (line 1) | debug(){return Qn(this.json),Rn(this.json,"debug"),this}
class Contractions (line 1) | class Contractions extends e{constructor(e,t,n){super(e,t,n),this.viewTy...
method constructor (line 1) | constructor(e,t,n){super(e,t,n),this.viewType="Contraction"}
method expand (line 1) | expand(){return this.docs.forEach((e=>{const t=ml.test(e[0].text);e.fo...
FILE: plugins/_experiments/compress/src/lz.js
function getBaseValue (line 18) | function getBaseValue(alphabet, character) {
FILE: plugins/_experiments/sentiment/src/escape.js
function RegExpEscape (line 13) | function RegExpEscape(text) {
FILE: plugins/_experiments/sentiment/src/lib.js
function labelWordArray (line 19) | function labelWordArray(inputArr) {
function findArraySplitPoints (line 84) | function findArraySplitPoints(startingArr, splitWord) {
function chunkArrays (line 126) | function chunkArrays(wordsArr, labelsArr) {
function value_limit (line 185) | function value_limit(val, min, max) {
function averageArray (line 191) | function averageArray(inputArr) {
FILE: plugins/dates/builds/compromise-dates.cjs
function isLeapYear (line 608) | function isLeapYear(year) { return (year % 4 === 0 && year % 100 !== 0) ...
function isDate (line 610) | function isDate(d) { return Object.prototype.toString.call(d) === '[obje...
function isArray$1 (line 611) | function isArray$1(input) { return Object.prototype.toString.call(input)...
function isObject (line 612) | function isObject(input) { return Object.prototype.toString.call(input) ...
function isBoolean (line 613) | function isBoolean(input) { return Object.prototype.toString.call(input)...
function zeroPad (line 615) | function zeroPad(str, len = 2) {
function titleCase$1 (line 621) | function titleCase$1(str) {
function ordinal (line 628) | function ordinal(i) {
function toCardinal (line 644) | function toCardinal(str) {
function normalize$3 (line 651) | function normalize$3(str = '') {
function getEpoch (line 665) | function getEpoch(tmp) {
function beADate (line 682) | function beADate(d, s) {
function formatTimezone (line 689) | function formatTimezone(offset, delimiter = '') {
function buildMapping (line 1013) | function buildMapping() {
function short$1 (line 1026) | function short$1() { return shortMonths }
function long$1 (line 1027) | function long$1() { return longMonths }
function mapping$3 (line 1028) | function mapping$3() { return buildMapping() }
function set$5 (line 1029) | function set$5(i18n) {
function short (line 1663) | function short() { return shortDays }
function long (line 1664) | function long() { return longDays }
function set$4 (line 1665) | function set$4(i18n) {
function useTitleCase (line 1686) | function useTitleCase() {
function set$3 (line 1690) | function set$3(val) {
function getDiff (line 2275) | function getDiff(a, b) {
function unitsString (line 2322) | function unitsString(unit) {
function set$2 (line 2326) | function set$2(i18n = {}) {
function pastDistanceString (line 2352) | function pastDistanceString(value) { return pastDistance(value) }
function futureDistanceString (line 2353) | function futureDistanceString(value) { return futureDistance(value) }
function pastString (line 2354) | function pastString() { return past }
function futureString (line 2355) | function futureString() { return future }
function presentString (line 2356) | function presentString() { return present }
function nowString (line 2357) | function nowString() { return now }
function almostString (line 2358) | function almostString() { return almost }
function overString (line 2359) | function overString() { return over }
function set$1 (line 2361) | function set$1(i18n) {
function pluralize (line 2398) | function pluralize(value, unit) {
function am (line 3286) | function am() { return morning }
function pm (line 3287) | function pm() { return evening }
function set (line 3288) | function set(i18n) {
class Unit (line 5058) | class Unit {
method constructor (line 5059) | constructor(input, unit, context) {
method clone (line 5088) | clone() {
method log (line 5093) | log() {
method applyShift (line 5099) | applyShift(obj = {}) {
method applyTime (line 5108) | applyTime(str) {
method applyWeekDay (line 5134) | applyWeekDay(day) {
method applyRel (line 5144) | applyRel(rel) {
method applySection (line 5154) | applySection(section) {
method format (line 5166) | format(fmt) {
method start (line 5169) | start() {
method end (line 5177) | end() {
method middle (line 5190) | middle() {
method beforeEnd (line 5197) | beforeEnd() {
method before (line 5208) | before() {
method after (line 5217) | after() {
method next (line 5223) | next() {
method last (line 5229) | last() {
class Day (line 5236) | class Day extends Unit {
method constructor (line 5237) | constructor(input, unit, context) {
method middle (line 5244) | middle() {
method beforeEnd (line 5248) | beforeEnd() {
class CalendarDate (line 5255) | class CalendarDate extends Day {
method constructor (line 5256) | constructor(input, unit, context) {
method next (line 5263) | next() {
method last (line 5267) | last() {
class WeekDay (line 5273) | class WeekDay extends Day {
method constructor (line 5274) | constructor(input, unit, context) {
method next (line 5297) | next() {
method last (line 5302) | last() {
method before (line 5308) | before() {
method applyRel (line 5316) | applyRel(rel) {
class Holiday (line 5344) | class Holiday extends CalendarDate {
method constructor (line 5345) | constructor(input, unit, context) {
class Hour (line 5354) | class Hour extends Unit {
method constructor (line 5355) | constructor(input, unit, context) {
class Minute (line 5363) | class Minute extends Unit {
method constructor (line 5364) | constructor(input, unit, context) {
class Moment (line 5372) | class Moment extends Unit {
method constructor (line 5373) | constructor(input, unit, context) {
class AnyMonth (line 5380) | class AnyMonth extends Unit {
method constructor (line 5381) | constructor(input, unit, context) {
class Month (line 5392) | class Month extends Unit {
method constructor (line 5393) | constructor(input, unit, context) {
method next (line 5401) | next() {
method last (line 5406) | last() {
method middle (line 5411) | middle() {
class AnyQuarter (line 5418) | class AnyQuarter extends Unit {
method constructor (line 5419) | constructor(input, unit, context) {
method last (line 5427) | last() {
class Quarter (line 5434) | class Quarter extends Unit {
method constructor (line 5435) | constructor(input, unit, context) {
method next (line 5443) | next() {
method last (line 5448) | last() {
class Season (line 5454) | class Season extends Unit {
method constructor (line 5455) | constructor(input, unit, context) {
method next (line 5463) | next() {
method last (line 5468) | last() {
class Year (line 5474) | class Year extends Unit {
method constructor (line 5475) | constructor(input, unit, context) {
class Week (line 5484) | class Week extends Unit {
method constructor (line 5485) | constructor(input, unit, context) {
method clone (line 5492) | clone() {
method middle (line 5495) | middle() {
method beforeEnd (line 5500) | beforeEnd() {
class WeekEnd (line 5507) | class WeekEnd extends Unit {
method constructor (line 5508) | constructor(input, unit, context) {
method start (line 5516) | start() {
method next (line 5524) | next() {
method last (line 5529) | last() {
class Dates (line 7533) | class Dates extends View {
method constructor (line 7534) | constructor(document, pointer, groups, opts = {}) {
method get (line 7540) | get(n) {
method json (line 7556) | json(opts = {}) {
method format (line 7570) | format(fmt) {
method isBefore (line 7591) | isBefore(iso) {
method isAfter (line 7599) | isAfter(iso) {
method isSame (line 7607) | isSame(unit, iso) {
class Times (line 7694) | class Times extends View {
method constructor (line 7695) | constructor(document, pointer, groups, opts) {
method format (line 7701) | format(fmt) {
method get (line 7721) | get(n) {
method json (line 7725) | json(opts = {}) {
class Durations (line 7816) | class Durations extends View {
method constructor (line 7817) | constructor(document, pointer, groups) {
method json (line 7822) | json(opts = {}) {
method get (line 7832) | get(options) {
FILE: plugins/dates/builds/compromise-dates.mjs
function g (line 1) | function g(e){return e%4==0&&e%100!=0||e%400==0}
function w (line 1) | function w(e){return"[object Date]"===Object.prototype.toString.call(e)&...
function b (line 1) | function b(e){return"[object Object]"===Object.prototype.toString.call(e)}
function k (line 1) | function k(e,t=2){return(e+="").length>=t?e:new Array(t-e.length+1).join...
function D (line 1) | function D(e){let t=e%10,a=e%100;return 1===t&&11!==a?e+"st":2===t&&12!=...
function v (line 1) | function v(e){return e=(e=String(e)).replace(/([0-9])(st|nd|rd|th)$/i,"$...
function x (line 1) | function x(e=""){return"day"===(e=(e=(e=(e=e.toLowerCase().trim()).repla...
function O (line 1) | function O(e){return"number"==typeof e?e:w(e)?e.getTime():e.epoch||0===e...
function M (line 1) | function M(e,t){return!1===b(e)?t.clone().set(e):e}
function _ (line 1) | function _(e,t=""){const a=e>0?"+":"-",n=Math.abs(e);return`${a}${k(pars...
function P (line 1) | function P(){return N}
function Y (line 1) | function Y(){return function(){const e={sep:8};for(let t=0;t<N.length;t+...
function ae (line 1) | function ae(){return ee}
function ne (line 1) | function ne(){return te}
function ke (line 1) | function ke(e){return be[e]||""}
function ze (line 1) | function ze(e){return je(e)}
function Te (line 1) | function Te(e){return $e(e)}
function Ve (line 1) | function Ve(){return Oe}
function qe (line 1) | function qe(e,t){return 1===e?e+" "+ke(t.slice(0,-1)):e+" "+ke(t)}
class Unit (line 1) | class Unit{constructor(e,t,a){this.unit=t||"day",this.setTime=!1;let n={...
method constructor (line 1) | constructor(e,t,a){this.unit=t||"day",this.setTime=!1;let n={};(a=a||{...
method clone (line 1) | clone(){let e=new Unit(this.d,this.unit,this.context);return e.setTime...
method log (line 1) | log(){return console.log("--"),this.d.log(),console.log("\n"),this}
method applyShift (line 1) | applyShift(e={}){return Object.keys(e).forEach((t=>{this.d=this.d.add(...
method applyTime (line 1) | applyTime(e){if(e){if(/^[0-9]{1,2}$/.test(e)?this.d=this.d.hour(e):thi...
method applyWeekDay (line 1) | applyWeekDay(e){if(e){let t=this.d.epoch;this.d=this.d.day(e),this.d.e...
method applyRel (line 1) | applyRel(e){return"next"===e?this.next():"last"===e||"this-past"===e?t...
method applySection (line 1) | applySection(e){return"start"===e?this.start():"end"===e?this.end():"m...
method format (line 1) | format(e){return this.d.format(e)}
method start (line 1) | start(){return this.d=this.d.startOf(this.unit),this.context.dayStart&...
method end (line 1) | end(){if(this.d=this.d.endOf(this.unit),this.context.dayEnd){this.d=th...
method middle (line 1) | middle(){let e=this.d.diff(this.d.endOf(this.unit)),t=Math.round(e.min...
method beforeEnd (line 1) | beforeEnd(){let e=this.d.startOf(this.unit).diff(this.d.endOf(this.uni...
method before (line 1) | before(){return this.d=this.d.minus(1,this.unit),this.d=this.d.endOf(t...
method after (line 1) | after(){return this.d=this.d.add(1,this.unit),this.d=this.d.startOf(th...
method next (line 1) | next(){return this.d=this.d.add(1,this.unit),this.d=this.d.startOf(thi...
method last (line 1) | last(){return this.d=this.d.minus(1,this.unit),this.d=this.d.startOf(t...
class Day (line 1) | class Day extends Unit{constructor(e,t,a){super(e,t,a),this.unit="day",t...
method constructor (line 1) | constructor(e,t,a){super(e,t,a),this.unit="day",this.d.isValid()&&(thi...
method middle (line 1) | middle(){return this.d=this.d.time("10am"),this}
method beforeEnd (line 1) | beforeEnd(){return this.d=this.d.time("2pm"),this}
class CalendarDate (line 1) | class CalendarDate extends Day{constructor(e,t,a){super(e,t,a),this.unit...
method constructor (line 1) | constructor(e,t,a){super(e,t,a),this.unit="day",this.d.isValid()&&(thi...
method next (line 1) | next(){return this.d=this.d.add(1,"year"),this}
method last (line 1) | last(){return this.d=this.d.minus(1,"year"),this}
class WeekDay (line 1) | class WeekDay extends Day{constructor(e,t,a){super(e,t,a),this.unit="day...
method constructor (line 1) | constructor(e,t,a){super(e,t,a),this.unit="day",this.isWeekDay=!0,"str...
method next (line 1) | next(){return this.d=this.d.add(7,"days"),this.d=this.d.day(this.weekD...
method last (line 1) | last(){return this.d=this.d.minus(7,"days"),this.d=this.d.day(this.wee...
method before (line 1) | before(){return this.d=this.d.minus(1,"day"),this.d=this.d.endOf("day"...
method applyRel (line 1) | applyRel(e){if("next"===e){let e=this.context.today.endOf("week").add(...
class Holiday (line 1) | class Holiday extends CalendarDate{constructor(e,t,a){super(e,t,a),this....
method constructor (line 1) | constructor(e,t,a){super(e,t,a),this.unit="day",this.d.isValid()&&(thi...
class Hour (line 1) | class Hour extends Unit{constructor(e,t,a){super(e,t,a,!0),this.unit="ho...
method constructor (line 1) | constructor(e,t,a){super(e,t,a,!0),this.unit="hour",this.d.isValid()&&...
class Minute (line 1) | class Minute extends Unit{constructor(e,t,a){super(e,t,a,!0),this.unit="...
method constructor (line 1) | constructor(e,t,a){super(e,t,a,!0),this.unit="minute",this.d.isValid()...
class Moment (line 1) | class Moment extends Unit{constructor(e,t,a){super(e,t,a,!0),this.unit="...
method constructor (line 1) | constructor(e,t,a){super(e,t,a,!0),this.unit="millisecond"}
class Month (line 1) | class Month extends Unit{constructor(e,t,a){super(e,t,a),this.unit="mont...
method constructor (line 1) | constructor(e,t,a){super(e,t,a),this.unit="month",this.d.isValid()&&(t...
method next (line 1) | next(){return this.d=this.d.add(1,"year"),this.d=this.d.startOf("month...
method last (line 1) | last(){return this.d=this.d.minus(1,"year"),this.d=this.d.startOf("mon...
method middle (line 1) | middle(){return this.d=this.d.add(15,"days"),this.d=this.d.startOf("da...
class AnyQuarter (line 1) | class AnyQuarter extends Unit{constructor(e,t,a){super(e,t,a),this.unit=...
method constructor (line 1) | constructor(e,t,a){super(e,t,a),this.unit="quarter",this.d.isValid()&&...
method last (line 1) | last(){return this.d=this.d.minus(1,"quarter"),this.d=this.d.startOf(t...
class Quarter (line 1) | class Quarter extends Unit{constructor(e,t,a){super(e,t,a),this.unit="qu...
method constructor (line 1) | constructor(e,t,a){super(e,t,a),this.unit="quarter",this.d.isValid()&&...
method next (line 1) | next(){return this.d=this.d.add(1,"year"),this.d=this.d.startOf(this.u...
method last (line 1) | last(){return this.d=this.d.minus(1,"year"),this.d=this.d.startOf(this...
class Season (line 1) | class Season extends Unit{constructor(e,t,a){super(e,t,a),this.unit="sea...
method constructor (line 1) | constructor(e,t,a){super(e,t,a),this.unit="season",this.d.isValid()&&(...
method next (line 1) | next(){return this.d=this.d.add(1,"year"),this.d=this.d.startOf(this.u...
method last (line 1) | last(){return this.d=this.d.minus(1,"year"),this.d=this.d.startOf(this...
class Year (line 1) | class Year extends Unit{constructor(e,t,a){super(e,t,a),this.unit="year"...
method constructor (line 1) | constructor(e,t,a){super(e,t,a),this.unit="year",this.d.isValid()&&(th...
class Week (line 1) | class Week extends Unit{constructor(e,t,a){super(e,t,a),this.unit="week"...
method constructor (line 1) | constructor(e,t,a){super(e,t,a),this.unit="week",this.d.isValid()&&(th...
method clone (line 1) | clone(){return new Week(this.d,this.unit,this.context)}
method middle (line 1) | middle(){return this.d=this.d.add(2,"days"),this}
method beforeEnd (line 1) | beforeEnd(){return this.d=this.d.day("friday"),this}
class WeekEnd (line 1) | class WeekEnd extends Unit{constructor(e,t,a){super(e,t,a),this.unit="we...
method constructor (line 1) | constructor(e,t,a){super(e,t,a),this.unit="week",this.d.isValid()&&(th...
method start (line 1) | start(){return this.d=this.d.day("saturday").startOf("day"),this}
method next (line 1) | next(){return this.d=this.d.add(1,this.unit),this.d=this.d.startOf("we...
method last (line 1) | last(){return this.d=this.d.minus(1,this.unit),this.d=this.d.startOf("...
method constructor (line 1) | constructor(e,t,a){super(e,t,a),this.unit="month",this.d.isValid()&&(thi...
class Dates (line 1) | class Dates extends e{constructor(e,t,a,n={}){super(e,t,a),this.viewType...
method constructor (line 1) | constructor(e,t,a,n={}){super(e,t,a),this.viewType="Dates",this.opts=O...
method get (line 1) | get(e){let t=[];return this.forEach((e=>{Ya(e,this.opts).forEach((e=>{...
method json (line 1) | json(e={}){return this.map((t=>{let a=t.toView().json(e)[0]||{};if(e&&...
method format (line 1) | format(e){let t=this.map((t=>{let a=Ya(t,this.opts)[0]||{};if(a.start)...
method isBefore (line 1) | isBefore(e){let t=Ha(this,e);return this.filter((e=>{let a=Ya(e,this.o...
method isAfter (line 1) | isAfter(e){let t=Ha(this,e);return this.filter((e=>{let a=Ya(e,this.op...
method isSame (line 1) | isSame(e,t){let a=Ha(this,t);return this.filter((t=>{let n=Ya(t,this.o...
class Times (line 1) | class Times extends e{constructor(e,t,a,n){super(e,t,a),this.viewType="T...
method constructor (line 1) | constructor(e,t,a,n){super(e,t,a),this.viewType="Times",this.opts=n||{}}
method format (line 1) | format(e){let t=this.map((t=>{let a=La(t)||{};if(a.time){let n=yt.now(...
method get (line 1) | get(e){return Ia(this,e).map(La)}
method json (line 1) | json(e={}){return this.map((t=>{let a=t.toView().json(e)[0]||{};return...
class Durations (line 1) | class Durations extends e{constructor(e,t,a){super(e,t,a),this.context={...
method constructor (line 1) | constructor(e,t,a){super(e,t,a),this.context={}}
method json (line 1) | json(e={}){return this.map((t=>{let a=t.toView().json(e)[0]||{};return...
method get (line 1) | get(e){let t=[];return this.forEach((e=>{let a=Ja(e);t.push(a)})),"num...
FILE: plugins/dates/index.d.ts
type View (line 2) | type View = ReturnType<typeof nlp>
type dateOptions (line 4) | interface dateOptions {
type DateView (line 19) | interface DateView extends View {
type TimeView (line 26) | interface TimeView extends View {
type DatesMethods (line 33) | interface DatesMethods {
FILE: plugins/dates/src/api/dates.js
class Dates (line 15) | class Dates extends View {
method constructor (line 16) | constructor(document, pointer, groups, opts = {}) {
method get (line 22) | get(n) {
method json (line 38) | json(opts = {}) {
method format (line 52) | format(fmt) {
method isBefore (line 73) | isBefore(iso) {
method isAfter (line 81) | isAfter(iso) {
method isSame (line 89) | isSame(unit, iso) {
FILE: plugins/dates/src/api/durations/index.js
class Durations (line 5) | class Durations extends View {
method constructor (line 6) | constructor(document, pointer, groups) {
method json (line 11) | json(opts = {}) {
method get (line 21) | get(options) {
FILE: plugins/dates/src/api/parse/one/units/Unit.js
class Unit (line 3) | class Unit {
method constructor (line 4) | constructor(input, unit, context) {
method clone (line 33) | clone() {
method log (line 38) | log() {
method applyShift (line 44) | applyShift(obj = {}) {
method applyTime (line 53) | applyTime(str) {
method applyWeekDay (line 79) | applyWeekDay(day) {
method applyRel (line 89) | applyRel(rel) {
method applySection (line 99) | applySection(section) {
method format (line 111) | format(fmt) {
method start (line 114) | start() {
method end (line 122) | end() {
method middle (line 135) | middle() {
method beforeEnd (line 142) | beforeEnd() {
method before (line 153) | before() {
method after (line 162) | after() {
method next (line 168) | next() {
method last (line 174) | last() {
FILE: plugins/dates/src/api/parse/one/units/_day.js
class Day (line 4) | class Day extends Unit {
method constructor (line 5) | constructor(input, unit, context) {
method middle (line 12) | middle() {
method beforeEnd (line 16) | beforeEnd() {
class CalendarDate (line 23) | class CalendarDate extends Day {
method constructor (line 24) | constructor(input, unit, context) {
method next (line 31) | next() {
method last (line 35) | last() {
class WeekDay (line 41) | class WeekDay extends Day {
method constructor (line 42) | constructor(input, unit, context) {
method next (line 65) | next() {
method last (line 70) | last() {
method before (line 76) | before() {
method applyRel (line 84) | applyRel(rel) {
class Holiday (line 112) | class Holiday extends CalendarDate {
method constructor (line 113) | constructor(input, unit, context) {
FILE: plugins/dates/src/api/parse/one/units/_time.js
class Hour (line 3) | class Hour extends Unit {
method constructor (line 4) | constructor(input, unit, context) {
class Minute (line 12) | class Minute extends Unit {
method constructor (line 13) | constructor(input, unit, context) {
class Moment (line 21) | class Moment extends Unit {
method constructor (line 22) | constructor(input, unit, context) {
FILE: plugins/dates/src/api/parse/one/units/_week.js
class Week (line 3) | class Week extends Unit {
method constructor (line 4) | constructor(input, unit, context) {
method clone (line 11) | clone() {
method middle (line 14) | middle() {
method beforeEnd (line 19) | beforeEnd() {
class WeekEnd (line 26) | class WeekEnd extends Unit {
method constructor (line 27) | constructor(input, unit, context) {
method start (line 35) | start() {
method next (line 43) | next() {
method last (line 48) | last() {
FILE: plugins/dates/src/api/parse/one/units/_year.js
class AnyMonth (line 4) | class AnyMonth extends Unit {
method constructor (line 5) | constructor(input, unit, context) {
class Month (line 16) | class Month extends Unit {
method constructor (line 17) | constructor(input, unit, context) {
method next (line 25) | next() {
method last (line 30) | last() {
method middle (line 35) | middle() {
class AnyQuarter (line 42) | class AnyQuarter extends Unit {
method constructor (line 43) | constructor(input, unit, context) {
method last (line 51) | last() {
class Quarter (line 58) | class Quarter extends Unit {
method constructor (line 59) | constructor(input, unit, context) {
method next (line 67) | next() {
method last (line 72) | last() {
class Season (line 78) | class Season extends Unit {
method constructor (line 79) | constructor(input, unit, context) {
method next (line 87) | next() {
method last (line 92) | last() {
class Year (line 98) | class Year extends Unit {
method constructor (line 99) | constructor(input, unit, context) {
FILE: plugins/dates/src/api/times.js
class Times (line 27) | class Times extends View {
method constructor (line 28) | constructor(document, pointer, groups, opts) {
method format (line 34) | format(fmt) {
method get (line 54) | get(n) {
method json (line 58) | json(opts = {}) {
FILE: plugins/paragraphs/builds/compromise-paragraphs.cjs
class Paragraphs (line 39) | class Paragraphs {
method constructor (line 40) | constructor(views) {
method found (line 45) | get found() {
method length (line 49) | get length() {
method text (line 53) | text(fmt) {
method json (line 56) | json() {
method match (line 59) | match(reg) {
method not (line 62) | not(reg) {
method sentences (line 65) | sentences() {
method terms (line 68) | terms() {
method filter (line 71) | filter(fn) {
method forEach (line 77) | forEach(fn) {
method map (line 83) | map(fn) {
method has (line 90) | has(reg) {
method if (line 93) | if(reg) {
method ifNo (line 97) | ifNo(reg) {
method eq (line 101) | eq(num) {
method first (line 108) | first() {
method last (line 111) | last() {
method debug (line 114) | debug() {
method update (line 122) | update(views) {
FILE: plugins/paragraphs/builds/compromise-paragraphs.mjs
class Paragraphs (line 1) | class Paragraphs{constructor(t){this.viewType="Paragraphs",this.views=t}...
method constructor (line 1) | constructor(t){this.viewType="Paragraphs",this.views=t}
method found (line 1) | get found(){return this.views.length>0}
method length (line 1) | get length(){return this.views.length}
method text (line 1) | text(t){return function(t,e){let s=[];return t.forEach((t=>{s+=e(t)}))...
method json (line 1) | json(){return function(t,e){let s=[];return t.forEach((t=>{s.push(t[e]...
method match (line 1) | match(e){return t(this.views,(t=>t.match(e)))}
method not (line 1) | not(e){return t(this.views,(t=>t.match(e)))}
method sentences (line 1) | sentences(){return t(this.views,(t=>t))}
method terms (line 1) | terms(){return t(this.views,(t=>t.terms()))}
method filter (line 1) | filter(t){let e=this.views.filter((e=>e.some(t)));return this.update(e)}
method forEach (line 1) | forEach(t){return this.views.forEach((e=>{e.forEach(t)})),this}
method map (line 1) | map(t){let e=this.views.map((e=>t(e)));return this.update(e)}
method has (line 1) | has(t){return this.views.some((e=>e.has(t)))}
method if (line 1) | if(t){let e=this.views.filter((e=>e.has(t)));return this.update(e)}
method ifNo (line 1) | ifNo(t){let e=this.views.filter((e=>!e.has(t)));return this.update(e)}
method eq (line 1) | eq(t){let e=this.views[t];return e?this.update([e]):this.update([])}
method first (line 1) | first(){return this.eq(0)}
method last (line 1) | last(){return this.eq(this.length-1)}
method debug (line 1) | debug(){this.views.forEach((t=>{console.log("\n=-=-=-=-"),t.debug()}))}
method update (line 1) | update(t){return new Paragraphs(t)}
FILE: plugins/paragraphs/index.d.ts
type View (line 2) | type View = ReturnType<typeof nlp>
type ParagraphView (line 4) | interface ParagraphView extends View {
type ParagraphMethods (line 7) | interface ParagraphMethods {
FILE: plugins/paragraphs/src/api.js
class Paragraphs (line 34) | class Paragraphs {
method constructor (line 35) | constructor(views) {
method found (line 40) | get found() {
method length (line 44) | get length() {
method text (line 48) | text(fmt) {
method json (line 51) | json() {
method match (line 54) | match(reg) {
method not (line 57) | not(reg) {
method sentences (line 60) | sentences() {
method terms (line 63) | terms() {
method filter (line 66) | filter(fn) {
method forEach (line 72) | forEach(fn) {
method map (line 78) | map(fn) {
method has (line 85) | has(reg) {
method if (line 88) | if(reg) {
method ifNo (line 92) | ifNo(reg) {
method eq (line 96) | eq(num) {
method first (line 103) | first() {
method last (line 106) | last() {
method debug (line 109) | debug() {
method update (line 117) | update(views) {
FILE: plugins/payload/index.d.ts
type View (line 2) | type View = ReturnType<typeof nlp>
type Payload (line 4) | type Payload = { match: View, val: any }
type PayloadMethods (line 6) | interface PayloadMethods {
FILE: plugins/speech/index.d.ts
type SpeechMethods (line 3) | interface SpeechMethods {
FILE: plugins/speed/builds/compromise-speed.cjs
function _interopNamespaceDefault (line 8) | function _interopNamespaceDefault(e) {
FILE: plugins/speed/index.d.ts
type SpeedMethods (line 4) | interface SpeedMethods {
FILE: plugins/stats/index.d.ts
type Freq (line 3) | type Freq = [word: string, freq: number]
type Gram (line 5) | type Gram = { size: number, count: number, normal: string }
type Opts (line 6) | type Opts = { min: number, max: number } | { size: number }
type StatsMethods (line 8) | interface StatsMethods {
FILE: plugins/wikipedia/index.d.ts
type View (line 2) | type View = ReturnType<typeof nlp>
type WikiMethods (line 4) | interface WikiMethods {
FILE: scripts/perf/index.js
constant BASELINE (line 6) | const BASELINE = 67 //node 12, 2020 mac mini
FILE: scripts/perf/pool/pool.js
class Pool (line 9) | class Pool {
method constructor (line 10) | constructor() {
method do (line 17) | do(msg) {
method count (line 34) | count() {
method close (line 37) | close() {
FILE: src/1-one/tokenize/methods/01-sentences/04-quote-merge.js
constant MAX_QUOTE (line 5) | const MAX_QUOTE = 280// ¯\_(ツ)_/¯
FILE: src/1-one/tokenize/methods/01-sentences/05-parens-merge.js
constant MAX_LEN (line 1) | const MAX_LEN = 250// ¯\_(ツ)_/¯
FILE: src/2-two/contraction-two/api/index.js
class Contractions (line 11) | class Contractions extends View {
method constructor (line 12) | constructor(document, pointer, groups) {
method expand (line 17) | expand() {
FILE: src/3-three/adjectives/plugin.js
class Adjectives (line 17) | class Adjectives extends View {
method constructor (line 18) | constructor(document, pointer, groups) {
method json (line 22) | json(opts = {}) {
method adverbs (line 37) | adverbs() {
method conjugate (line 40) | conjugate(n) {
method toComparative (line 53) | toComparative(n) {
method toSuperlative (line 61) | toSuperlative(n) {
method toAdverb (line 69) | toAdverb(n) {
method toNoun (line 77) | toNoun(n) {
FILE: src/3-three/adverbs/plugin.js
class Adverbs (line 10) | class Adverbs extends View {
method constructor (line 11) | constructor(document, pointer, groups) {
method conjugate (line 15) | conjugate(n) {
method json (line 24) | json(opts = {}) {
FILE: src/3-three/chunker/api/api.js
class Chunks (line 6) | class Chunks extends View {
method constructor (line 7) | constructor(document, pointer, groups) {
method isVerb (line 11) | isVerb() {
method isNoun (line 14) | isNoun() {
method isAdjective (line 17) | isAdjective() {
method isPivot (line 20) | isPivot() {
method debug (line 24) | debug() {
method update (line 29) | update(pointer) {
FILE: src/3-three/coreference/api/pronouns.js
class Pronouns (line 3) | class Pronouns extends View {
method constructor (line 4) | constructor(document, pointer, groups) {
method hasReference (line 8) | hasReference() {
method refersTo (line 16) | refersTo() {
method update (line 32) | update(pointer) {
FILE: src/3-three/misc/acronyms/index.js
class Acronyms (line 6) | class Acronyms extends View {
method constructor (line 7) | constructor(document, pointer, groups) {
method strip (line 11) | strip() {
method addPeriods (line 20) | addPeriods() {
FILE: src/3-three/misc/parentheses/index.js
class Parentheses (line 4) | class Parentheses extends View {
method constructor (line 5) | constructor(document, pointer, groups) {
method strip (line 9) | strip() {
FILE: src/3-three/misc/possessives/index.js
class Possessives (line 22) | class Possessives extends View {
method constructor (line 23) | constructor(document, pointer, groups) {
method strip (line 27) | strip() {
FILE: src/3-three/misc/quotations/index.js
class Quotations (line 5) | class Quotations extends View {
method constructor (line 6) | constructor(document, pointer, groups) {
method strip (line 10) | strip() {
FILE: src/3-three/misc/slashes/index.js
class Slashes (line 5) | class Slashes extends View {
method constructor (line 6) | constructor(document, pointer, groups) {
method split (line 10) | split() {
FILE: src/3-three/nouns/api/api.js
class Nouns (line 9) | class Nouns extends View {
method constructor (line 10) | constructor(document, pointer, groups) {
method parse (line 15) | parse(n) {
method json (line 19) | json(n) {
method conjugate (line 29) | conjugate(n) {
method isPlural (line 47) | isPlural(n) {
method isSingular (line 52) | isSingular(n) {
method adjectives (line 57) | adjectives(n) {
method toPlural (line 68) | toPlural(n) {
method toSingular (line 75) | toSingular(n) {
method update (line 82) | update(pointer) {
FILE: src/3-three/numbers/fractions/api.js
class Fractions (line 9) | class Fractions extends View {
method constructor (line 10) | constructor(document, pointer, groups) {
method parse (line 14) | parse(n) {
method get (line 17) | get(n) {
method json (line 20) | json(n) {
method toDecimal (line 29) | toDecimal(n) {
method toFraction (line 38) | toFraction(n) {
method toOrdinal (line 48) | toOrdinal(n) {
method toCardinal (line 59) | toCardinal(n) {
method toPercentage (line 67) | toPercentage(n) {
FILE: src/3-three/numbers/numbers/api.js
class Numbers (line 8) | class Numbers extends View {
method constructor (line 9) | constructor(document, pointer, groups) {
method parse (line 13) | parse(n) {
method get (line 16) | get(n) {
method json (line 21) | json(n) {
method units (line 37) | units() {
method isUnit (line 41) | isUnit(allowed) {
method isOrdinal (line 45) | isOrdinal() {
method isCardinal (line 49) | isCardinal() {
method toNumber (line 54) | toNumber() {
method toLocaleString (line 71) | toLocaleString() {
method toText (line 92) | toText() {
method toCardinal (line 111) | toCardinal() {
method toOrdinal (line 130) | toOrdinal() {
method isEqual (line 150) | isEqual(n) {
method greaterThan (line 157) | greaterThan(n) {
method lessThan (line 164) | lessThan(n) {
method between (line 171) | between(min, max) {
method set (line 178) | set(n) {
method add (line 209) | add(n) {
method subtract (line 236) | subtract(n, agree) {
method increment (line 240) | increment(agree) {
method decrement (line 244) | decrement(agree) {
method update (line 248) | update(pointer) {
FILE: src/3-three/sentences/api.js
class Sentences (line 10) | class Sentences extends View {
method constructor (line 11) | constructor(document, pointer, groups) {
method json (line 15) | json(opts = {}) {
method toPastTense (line 28) | toPastTense(n) {
method toPresentTense (line 34) | toPresentTense(n) {
method toFutureTense (line 40) | toFutureTense(n) {
method toInfinitive (line 47) | toInfinitive(n) {
method toNegative (line 53) | toNegative(n) {
method toPositive (line 59) | toPositive(n) {
method isQuestion (line 65) | isQuestion(n) {
method isExclamation (line 68) | isExclamation(n) {
method isStatement (line 72) | isStatement(n) {
method update (line 77) | update(pointer) {
FILE: src/3-three/topics/people/api.js
class People (line 10) | class People extends View {
method constructor (line 11) | constructor(document, pointer, groups) {
method parse (line 15) | parse(n) {
method json (line 18) | json(n) {
method presumedMale (line 33) | presumedMale() {
method presumedFemale (line 38) | presumedFemale() {
method update (line 44) | update(pointer) {
FILE: src/3-three/verbs/api/api.js
class Verbs (line 17) | class Verbs extends View {
method constructor (line 18) | constructor(document, pointer, groups) {
method parse (line 22) | parse(n) {
method json (line 25) | json(opts, n) {
method subjects (line 34) | subjects(n) {
method adverbs (line 40) | adverbs(n) {
method isSingular (line 43) | isSingular(n) {
method isPlural (line 48) | isPlural(n) {
method isImperative (line 53) | isImperative(n) {
method toInfinitive (line 56) | toInfinitive(n) {
method toPresentTense (line 63) | toPresentTense(n) {
method toPastTense (line 73) | toPastTense(n) {
method toFutureTense (line 83) | toFutureTense(n) {
method toGerund (line 93) | toGerund(n) {
method toPastParticiple (line 103) | toPastParticiple(n) {
method conjugate (line 113) | conjugate(n) {
method isNegative (line 132) | isNegative() {
method isPositive (line 136) | isPositive() {
method toPositive (line 140) | toPositive() {
method toNegative (line 147) | toNegative(n) {
method update (line 155) | update(pointer) {
FILE: src/4-four/facts/api.js
class Facts (line 27) | class Facts {
method constructor (line 28) | constructor(facts, doc) {
method json (line 37) | json() {
method debug (line 41) | debug() {
FILE: src/API/View.js
class View (line 4) | class View {
method constructor (line 5) | constructor(document, pointer, groups = {}) {
method docs (line 23) | get docs() {
method pointer (line 30) | get pointer() {
method methods (line 33) | get methods() {
method model (line 36) | get model() {
method hooks (line 39) | get hooks() {
method isView (line 42) | get isView() {
method found (line 46) | get found() {
method length (line 50) | get length() {
method fullPointer (line 54) | get fullPointer() {
method update (line 75) | update(pointer) {
method toView (line 97) | toView(pointer) {
method fromText (line 100) | fromText(input) {
method clone (line 113) | clone() {
FILE: src/API/extend.js
function mergeDeep (line 10) | function mergeDeep(model, plugin) {
function mergeQuick (line 27) | function mergeQuick(model, plugin) {
FILE: tests/_ignore/quotations.ignore.js
function testAllQuotes (line 5) | function testAllQuotes(a, t) {
FILE: types/misc.d.ts
type Document (line 1) | type Document = Term[][]
type Pointer (line 3) | type Pointer = [n?: number, start?: number, end?: number, startId?: stri...
type outMethods (line 5) | type outMethods = 'text' | 'normal' | 'offset' | 'terms' | 'topk' | 'jso...
type Groups (line 7) | type Groups = object
type Term (line 9) | interface Term {
type JsonProps (line 27) | interface JsonProps {
type Lexicon (line 59) | interface Lexicon {
type Plugin (line 63) | interface Plugin {
type matchOptions (line 76) | interface matchOptions {
type Match (line 81) | interface Match {
type Net (line 90) | interface Net {
type ParsedMatch (line 96) | type ParsedMatch = object[]
FILE: types/one.d.ts
type TypedPlugin (line 42) | interface TypedPlugin<Methods extends object> extends Plugin { methods: ...
FILE: types/three.d.ts
type TypedPlugin (line 42) | interface TypedPlugin<Methods extends object> extends Plugin { methods: ...
FILE: types/two.d.ts
type TypedPlugin (line 42) | interface TypedPlugin<Methods extends object> extends Plugin { methods: ...
FILE: types/view/one.d.ts
type Matchable (line 3) | type Matchable = string | View | Net | ParsedMatch
type ReplaceWithProps (line 5) | interface ReplaceWithProps {
class View (line 14) | class View {
FILE: types/view/three.d.ts
type Three (line 3) | interface Three extends View {
type Nouns (line 88) | interface Nouns extends View {
type Numbers (line 101) | interface Numbers extends View {
type Fractions (line 144) | interface Fractions extends View {
type Sentences (line 162) | interface Sentences extends View {
type People (line 187) | interface People extends View {
type Verbs (line 193) | interface Verbs extends View {
type Acronyms (line 232) | interface Acronyms extends View {
type Parentheses (line 238) | interface Parentheses extends View {
type Possessives (line 242) | interface Possessives extends View {
type Quotations (line 246) | interface Quotations extends View {
type Slashes (line 250) | interface Slashes extends View {
type Adjectives (line 255) | interface Adjectives extends View {
type Adverbs (line 271) | interface Adverbs extends View { }
FILE: types/view/two.d.ts
type Two (line 3) | interface Two extends View {
type Contractions (line 15) | interface Contractions extends View {
Condensed preview — 1062 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (6,461K chars).
[
{
"path": "README.md",
"chars": 61457,
"preview": "<div align=\"center\">\n <img height=\"15px\" src=\"https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-1"
},
{
"path": "builds/compromise.js",
"chars": 351087,
"preview": "!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define"
},
{
"path": "builds/one/compromise-one.cjs",
"chars": 86533,
"preview": "!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define"
},
{
"path": "builds/one/compromise-one.mjs",
"chars": 86314,
"preview": "var t={methods:{one:{},two:{},three:{},four:{}},model:{one:{},two:{},three:{}},compute:{},hooks:[]};const e={compute:fun"
},
{
"path": "builds/three/compromise-three.cjs",
"chars": 351087,
"preview": "!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define"
},
{
"path": "builds/three/compromise-three.mjs",
"chars": 350868,
"preview": "var e={methods:{one:{},two:{},three:{},four:{}},model:{one:{},two:{},three:{}},compute:{},hooks:[]};const t={compute:fun"
},
{
"path": "builds/two/compromise-two.cjs",
"chars": 290216,
"preview": "!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define"
},
{
"path": "builds/two/compromise-two.mjs",
"chars": 289997,
"preview": "var e={methods:{one:{},two:{},three:{},four:{}},model:{one:{},two:{},three:{}},compute:{},hooks:[]};const t={compute:fun"
},
{
"path": "changelog.md",
"chars": 33007,
"preview": "compromise uses semver, and pushes to npm and github frequently\n\n- **Major** is a breaking api change - method or respon"
},
{
"path": "data/README.md",
"chars": 888,
"preview": "hello!\n\nhere is the data compressed and compiled into the word models that compromise uses to understand text.\n\nthere ar"
},
{
"path": "data/lexicon/adjectives/adjectives.js",
"chars": 10690,
"preview": "//adjectives that don't conjugate to superlative/adverb/verb forms\nexport default [\n 'prima',\n 'ultra',\n 'extra',\n '"
},
{
"path": "data/lexicon/adjectives/comparables.js",
"chars": 3603,
"preview": "//adjectives that convert to superlative/comparative form\nexport default [\n 'absurd',\n 'angry',\n 'awesome',\n 'bad',\n"
},
{
"path": "data/lexicon/dates/dates.js",
"chars": 183,
"preview": "// uncontroversial date words\nexport default [\n 'today',\n 'tomorrow',\n 'tmr',\n 'tmrw',\n 'yesterday',\n 'weekend',\n "
},
{
"path": "data/lexicon/dates/durations.js",
"chars": 400,
"preview": "export default [\n 'century',\n 'centuries',\n 'day',\n 'days',\n 'decade',\n 'decades',\n 'hour',\n 'hours',\n 'hr',\n "
},
{
"path": "data/lexicon/dates/months.js",
"chars": 189,
"preview": "export default [\n // 'january',\n 'february',\n // 'april',\n // 'june',\n 'july',\n // 'august',\n 'september',\n 'oct"
},
{
"path": "data/lexicon/dates/weekdays.js",
"chars": 285,
"preview": "export default [\n 'monday',\n 'tuesday',\n 'wednesday',\n 'thursday',\n 'friday',\n 'saturday',\n 'sunday',\n 'mon',\n "
},
{
"path": "data/lexicon/index.js",
"chars": 4709,
"preview": "//directory of files to pack with `node scripts/pack.js`\n//they are stored in compressed form\nimport lex from './misc.js"
},
{
"path": "data/lexicon/misc/adverbs.js",
"chars": 1299,
"preview": "// most are generated from adjective list at runtime\nexport default [\n 'a lot',\n 'a posteriori',\n 'abroad',\n 'ad nau"
},
{
"path": "data/lexicon/misc/conjunctions.js",
"chars": 964,
"preview": "export default [\n // 'after',\n 'although',\n 'and',\n 'as',\n 'as far as',\n 'as if',\n // 'as long as',\n 'as much as"
},
{
"path": "data/lexicon/misc/currencies.js",
"chars": 945,
"preview": "export default [\n '¢',\n '$',\n '£',\n '¥',\n '฿',\n '₡',\n '€',\n '₭',\n '₨',\n '﷼',\n 'aud',\n 'baht',\n 'bitcoin',\n "
},
{
"path": "data/lexicon/misc/determiners.js",
"chars": 395,
"preview": "export default [\n 'a',\n 'an',\n 'another',\n 'any',\n 'both',\n 'each',\n 'else',\n 'every',\n 'few',\n 'least',\n 'mu"
},
{
"path": "data/lexicon/misc/expressions.js",
"chars": 1635,
"preview": "// also called 'interjections'\nexport default [\n 'a la',\n 'ah',\n 'aha',\n 'ahem',\n 'ahoy',\n 'alas',\n 'amen',\n 'ar"
},
{
"path": "data/lexicon/misc/prepositions.js",
"chars": 815,
"preview": "export default [\n 'about',\n 'across',\n 'after',\n 'along',\n 'amid',\n 'amidst',\n 'among',\n 'amongst',\n 'apropos',"
},
{
"path": "data/lexicon/misc.js",
"chars": 1773,
"preview": "export default {\n better: 'Comparative',\n farther: 'Comparative',\n finer: 'Comparative',\n fewer: 'Comparative',\n ea"
},
{
"path": "data/lexicon/nouns/actors.js",
"chars": 7454,
"preview": "//professions 'lawyer' that aren't covered by verb.to_actor()\n\nexport default [\n 'accountant',\n 'acquaintance',\n 'acr"
},
{
"path": "data/lexicon/nouns/demonyms.js",
"chars": 1897,
"preview": "//adjectival forms of place names, as adjectives.\nexport default [\n 'afghan',\n 'african',\n 'albanian',\n 'algerian',\n"
},
{
"path": "data/lexicon/nouns/organizations.js",
"chars": 5031,
"preview": "//just a few named-organizations\n//no acronyms needed. no product/brand pollution.\nexport default [\n // 'abc',\n 'acade"
},
{
"path": "data/lexicon/nouns/possessives.js",
"chars": 212,
"preview": "export default [\n // 'her', //this one is check ambiguous\n // 'hers',\n // 'his',\n 'its',\n 'mine',\n 'my',\n // 'non"
},
{
"path": "data/lexicon/nouns/pronouns.js",
"chars": 163,
"preview": "export default [\n 'it',\n 'they',\n 'i',\n 'them',\n 'you',\n 'she',\n 'me',\n 'he',\n 'him',\n 'us',\n 'we',\n 'thou',"
},
{
"path": "data/lexicon/nouns/properNouns.js",
"chars": 552,
"preview": "// properNouns\nexport default [\n 'mercedes',\n 'barbie',\n 'catalina',\n 'christi',\n 'diego',\n 'elmo',\n 'franco',\n "
},
{
"path": "data/lexicon/nouns/relative-prounoun.js",
"chars": 229,
"preview": "export default [\n 'whatever',\n 'whatsoever',\n 'whichever',\n 'whichsoever',\n 'whoever',\n 'whom',\n 'whomever',\n 'w"
},
{
"path": "data/lexicon/nouns/singulars.js",
"chars": 5408,
"preview": "//most nouns do not nead to be listed\n// for whatever reasons, these look like not-nouns\n// they are all inflected to ad"
},
{
"path": "data/lexicon/nouns/sportsTeams.js",
"chars": 2997,
"preview": "export default [\n //mlb\n 'arizona diamondbacks',\n 'atlanta braves',\n 'baltimore orioles',\n 'boston red sox',\n 'chi"
},
{
"path": "data/lexicon/nouns/uncountables.js",
"chars": 3917,
"preview": "//common nouns that have no plural form. These are suprisingly rare\n//used in noun.inflect(), and added as nouns in lexi"
},
{
"path": "data/lexicon/numbers/cardinals.js",
"chars": 435,
"preview": "export default [\n 'zero',\n 'one',\n 'two',\n 'three',\n 'four',\n 'five',\n 'six',\n 'seven',\n 'eight',\n 'nine',\n '"
},
{
"path": "data/lexicon/numbers/multiples.js",
"chars": 152,
"preview": "export default [\n 'hundred',\n 'thousand',\n 'million',\n 'billion',\n 'trillion',\n 'quadrillion',\n 'quintillion',\n "
},
{
"path": "data/lexicon/numbers/ordinals.js",
"chars": 417,
"preview": "export default [\n 'zeroth',\n 'first',\n 'second',\n 'third',\n 'fourth',\n 'fifth',\n 'sixth',\n 'seventh',\n 'eighth'"
},
{
"path": "data/lexicon/numbers/units.js",
"chars": 1891,
"preview": "// ambigous units are in ../switches/unit-noun.js\n// units that are also abbreviations are in ../abbrev/units.js\nexport "
},
{
"path": "data/lexicon/people/femaleNames.js",
"chars": 21604,
"preview": "//names with a distinctive signal that they identify as a female, internationally\n\nexport default [\n 'aada',\n 'aadya',"
},
{
"path": "data/lexicon/people/firstnames.js",
"chars": 872,
"preview": "//ambiguously-gendered firstnames\n//names commonly used in either gender\nexport default [\n 'alexis',\n 'andra',\n 'aubr"
},
{
"path": "data/lexicon/people/honorifics.js",
"chars": 139,
"preview": "export default [\n 'lieutenant general',\n 'field marshal',\n 'rear admiral',\n 'vice admiral',\n 'sergeant major',\n 'd"
},
{
"path": "data/lexicon/people/lastnames.js",
"chars": 11854,
"preview": "//a random copy+paste job from around the internet\n//(dont mean to step on any toes)\n//some countries have a higher last"
},
{
"path": "data/lexicon/people/maleNames.js",
"chars": 15818,
"preview": "//names with a distinctive signal that they identify as a male, internationally\n// some are in ./switches/person-verb et"
},
{
"path": "data/lexicon/people/people.js",
"chars": 3227,
"preview": "export default [\n //famous people with names that are hard to recognize independendtly\n //male\n 'hitler',\n 'ronaldo'"
},
{
"path": "data/lexicon/places/cities.js",
"chars": 6709,
"preview": "export default [\n 'aalborg',\n 'aarhus',\n 'abidjan',\n 'abu dhabi',\n 'ahmedabad',\n 'almaty',\n 'amman',\n 'amsterdam"
},
{
"path": "data/lexicon/places/countries.js",
"chars": 3721,
"preview": "export default [\n 'afghanistan',\n 'albania',\n 'algeria',\n 'america',\n 'andorra',\n 'angola',\n 'anguilla',\n 'antar"
},
{
"path": "data/lexicon/places/places.js",
"chars": 4941,
"preview": "export default [\n //some of the busiest airports in the world from\n //https://www.world-airport-codes.com/world-top-30"
},
{
"path": "data/lexicon/places/regions.js",
"chars": 3331,
"preview": "//some major 'second-level' administrative divisions\nexport default [\n 'alabama',\n 'alaska',\n 'arizona',\n 'arkansas'"
},
{
"path": "data/lexicon/switches/actor-verb.js",
"chars": 602,
"preview": "// actor like 'the coach' or verb like 'coach a team'\n// use noun-verb for sometimes-actors, like 'target', or 'star'\nex"
},
{
"path": "data/lexicon/switches/adj-gerund.js",
"chars": 4410,
"preview": "// rallying the troops\n// her rallying cry\nexport default [\n 'absorbing',\n 'accelerating',\n 'accompanying',\n 'aching"
},
{
"path": "data/lexicon/switches/adj-noun.js",
"chars": 2152,
"preview": "// the commercial market\n// watching the commercial\nexport default [\n 'academic',\n 'adolescent',\n 'adult',\n 'alert',"
},
{
"path": "data/lexicon/switches/adj-past.js",
"chars": 4845,
"preview": "// clues: [adj, past],\n// fallback: 'Adjective',\nexport default [\n 'abandoned',\n 'absorbed',\n 'accepted',\n 'acknowle"
},
{
"path": "data/lexicon/switches/adj-present.js",
"chars": 1058,
"preview": "// 'would mean' vs 'is mean'\nexport default [\n 'approximate',\n 'blunt',\n 'clean',\n 'complete',\n 'conjugate',\n 'coo"
},
{
"path": "data/lexicon/switches/noun-gerund.js",
"chars": 4283,
"preview": "// gerunds can be adjectives 'striking example'\n// or nouns 'arguing', or 'operating room'\nexport default [\n 'abandonin"
},
{
"path": "data/lexicon/switches/noun-verb.js",
"chars": 10445,
"preview": "// words that can be infinitives or nouns\nexport default [\n 'abuse',\n 'accent',\n 'access',\n 'accord',\n 'account',\n "
},
{
"path": "data/lexicon/switches/person-adj.js",
"chars": 153,
"preview": "export default [\n 'misty',\n 'rusty',\n 'dusty',\n 'rich',\n 'randy',\n 'sandy',\n 'earnest',\n 'frank',\n // 'young',\n"
},
{
"path": "data/lexicon/switches/person-date.js",
"chars": 180,
"preview": "// person-names that can be dates\nexport default [\n // clues: [person, date],\n // fallback: 'Month',\n 'april', 'augus"
},
{
"path": "data/lexicon/switches/person-noun.js",
"chars": 1175,
"preview": "// person-names that can be dates\nexport default [\n // clues: [person, noun],\n // fallback: 'Singular',\n // words: [\n"
},
{
"path": "data/lexicon/switches/person-place.js",
"chars": 232,
"preview": "// cities\nexport default [\n 'alexandria',\n 'austin',\n 'darwin',\n 'diego',\n 'hamilton',\n 'houston',\n 'jordan',\n '"
},
{
"path": "data/lexicon/switches/person-verb.js",
"chars": 507,
"preview": "// words that can be a verb or a person's name\nexport default [\n // clues: [person, verb],\n // fallback: 'PresentTense"
},
{
"path": "data/lexicon/switches/unit-noun.js",
"chars": 493,
"preview": "export default [\n 'cm',\n 'cup',\n 'cups',\n 'feet',\n 'foot',\n 'ft',\n 'gal',\n 'gb',\n 'hg',\n 'inch',\n 'inches',\n "
},
{
"path": "data/lexicon/verbs/infinitives.js",
"chars": 9841,
"preview": "export default [\n 'abandon',\n 'abet',\n 'abide',\n 'abolish',\n 'abort',\n 'abound',\n 'abscond',\n 'absolve',\n 'acce"
},
{
"path": "data/lexicon/verbs/modals.js",
"chars": 185,
"preview": "export default [\n 'can',\n 'could',\n 'lets', //arguable\n // 'may',\n 'might',\n 'must',\n 'ought to',\n 'ought',\n 'o"
},
{
"path": "data/lexicon/verbs/participles.js",
"chars": 940,
"preview": "export default [\n // -- participle forms--\n 'arisen',\n 'awaken',\n 'awoken',\n 'beaten',\n 'been',\n 'begun',\n 'bitt"
},
{
"path": "data/lexicon/verbs/phrasals.js",
"chars": 13806,
"preview": "// phrasal verbs are two words that really mean one verb.\n// 'beef up' is one verb, and not some direction of beefing.\n/"
},
{
"path": "data/lexicon/verbs/verbs.js",
"chars": 153,
"preview": "//verbs we shouldn't conjugate, for whatever reason\nexport default [\n 'has',\n 'keep tabs',\n 'born',\n 'cannot',\n 'go"
},
{
"path": "data/pairs/AdjToNoun.js",
"chars": 12876,
"preview": "export default [\n ['abject', 'abjection'],\n ['abstemious', 'abstemiousness'],\n ['abundant', 'abundance'],\n ['accompl"
},
{
"path": "data/pairs/Comparative.js",
"chars": 7281,
"preview": "export default [\n ['angry', 'angrier'],\n ['bad', 'worse'],\n ['bald', 'balder'],\n ['bawdy', 'bawdier'],\n ['big', 'bi"
},
{
"path": "data/pairs/Gerund.js",
"chars": 82091,
"preview": "export default [\n ['including', 'include'],\n ['following', 'follow'],\n ['being', 'is'],\n ['using', 'use'],\n ['worki"
},
{
"path": "data/pairs/Participle.js",
"chars": 1776,
"preview": "export default [\n ['arisen', 'arise'],\n ['awoken', 'awake'],\n ['beaten', 'beat'],\n ['been', 'be'],\n ['begun', 'begi"
},
{
"path": "data/pairs/PastTense.js",
"chars": 58025,
"preview": "export default [\n ['abandoned', 'abandon'],\n ['abated', 'abate'],\n ['abducted', 'abduct'],\n ['abolished', 'abolish']"
},
{
"path": "data/pairs/PresentTense.js",
"chars": 50383,
"preview": "export default [\n ['are', 'is'],\n ['has', 'have'],\n ['provides', 'provide'],\n ['does', 'do'],\n ['includes', 'includ"
},
{
"path": "data/pairs/Superlative.js",
"chars": 9101,
"preview": "export default [\n ['good', 'best'],\n ['least', 'least'],\n ['large', 'largest'],\n ['high', 'highest'],\n ['late', 'la"
},
{
"path": "data/pairs/index.js",
"chars": 398,
"preview": "import Comparative from './Comparative.js'\nimport Gerund from './Gerund.js'\nimport Participle from './Participle.js'\nimp"
},
{
"path": "demos/performance.html",
"chars": 2069,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n <meta charset=\"utf-8\" />\n <meta name=\"viewport\" content=\"width=device-width,"
},
{
"path": "demos/plugin.html",
"chars": 948,
"preview": "<html>\n\n<head>\n <meta charset=\"utf-8\" />\n <style>\n #result {\n font-size: 40px;\n margin: 20%;\n }\n\n a"
},
{
"path": "demos/web-worker/_worker.js",
"chars": 376,
"preview": "/* global importScripts */\n\n//loads and runs compromise inside the worker-instance\nself.addEventListener(\n 'message',\n "
},
{
"path": "demos/web-worker/index.html",
"chars": 2928,
"preview": "<html>\n\n<head>\n <meta charset=\"utf-8\" />\n <style>\n #result {\n font-size: 40px;\n margin: 20%;\n }\n\n a"
},
{
"path": "eslint.config.js",
"chars": 1078,
"preview": "import * as regexpPlugin from \"eslint-plugin-regexp\"\n\nexport default [\n regexpPlugin.configs[\"flat/recommended\"],\n\n {\n"
},
{
"path": "one/package.json",
"chars": 578,
"preview": "{\n\t\"name\": \"compromise-one\",\n\t\"version\": \"14.14.4\",\n\t\"description\": \"\",\n\t\"type\": \"module\",\n\t\"module\": \"./../src/one.js\","
},
{
"path": "package.json",
"chars": 4069,
"preview": "{\n \"author\": \"Spencer Kelly <spencermountain@gmail.com> (http://spencermounta.in)\",\n \"name\": \"compromise\",\n \"descript"
},
{
"path": "plugins/_experiments/ast/README.md",
"chars": 183,
"preview": "attempt to create a [unist-formatted](https://github.com/syntax-tree/unist) Abstract Syntax Tree via some [dependency pa"
},
{
"path": "plugins/_experiments/ast/package.json",
"chars": 1208,
"preview": "{\n \"name\": \"compromise-ast\",\n \"description\": \"plugin for nlp-compromise\",\n \"version\": \"0.0.0\",\n \"author\": \"Spencer K"
},
{
"path": "plugins/_experiments/ast/scratch.js",
"chars": 321,
"preview": "import nlp from '../../../src/three.js'\nimport plg from './src/plugin.js'\nnlp.plugin(plg)\n\nlet str = ''\nstr = `I prefer "
},
{
"path": "plugins/_experiments/ast/src/ast.js",
"chars": 1585,
"preview": "\nconst chunkType = function (chunk) {\n if (chunk.isVerb().found) {\n return 'verbPhrase'\n }\n if (chunk.isNoun().fou"
},
{
"path": "plugins/_experiments/ast/src/compute/index.js",
"chars": 201,
"preview": "\nexport default {\n lines: function (view) {\n view.lines().forEach((arr, i) => {\n arr.forEach(s => {\n s.d"
},
{
"path": "plugins/_experiments/ast/src/lines.js",
"chars": 566,
"preview": "// return all newline-seperated sections in the document\nconst toLines = function (doc) {\n const newLine = /\\n/\n const"
},
{
"path": "plugins/_experiments/ast/src/plugin.js",
"chars": 322,
"preview": "import toAst from './ast.js'\nimport toLines from './lines.js'\nimport compute from './compute/index.js'\n\n\n\nexport default"
},
{
"path": "plugins/_experiments/cmd-k/README.md",
"chars": 795,
"preview": "<div align=\"center\">\n <img src=\"https://cloud.githubusercontent.com/assets/399657/23590290/ede73772-01aa-11e7-8915-181e"
},
{
"path": "plugins/_experiments/cmd-k/package.json",
"chars": 1240,
"preview": "{\n \"name\": \"compromise-cmd-k\",\n \"description\": \"plugin for nlp-compromise\",\n \"version\": \"0.0.1\",\n \"author\": \"Spencer"
},
{
"path": "plugins/_experiments/cmd-k/scratch.js",
"chars": 230,
"preview": "/* eslint-disable no-console, no-unused-vars */\nimport nlp from '../../../src/three.js'\nimport plugin from './src/plugin"
},
{
"path": "plugins/_experiments/cmd-k/src/plugin.js",
"chars": 117,
"preview": "import searchBang from './searchBang.js'\nimport slashCmd from './slashCmd.js'\n\nexport default [searchBang, slashCmd]\n"
},
{
"path": "plugins/_experiments/cmd-k/src/searchBang.js",
"chars": 937,
"preview": "// searchbang is a ! followed by a word\n// it's a search engine shortcut\n// !g is google, etc\n\n\nconst instaBangs = [\n '"
},
{
"path": "plugins/_experiments/cmd-k/src/slashCmd.js",
"chars": 631,
"preview": "\n// slashCmds are / followed by a word\n// they're a way to add custom commands\n// \"/me writes some bugs\"\n\nconst slashCmd"
},
{
"path": "plugins/_experiments/compress/README.md",
"chars": 109,
"preview": "they say that compression and intellegence are the same thing,\nbut I'm not small-enough to understand that.\n\n"
},
{
"path": "plugins/_experiments/compress/src/index.js",
"chars": 488,
"preview": "import lz from './lz.js'\nimport fs from 'fs'\n\nlet string = fs.readFileSync('../../../plugins/speed/tests/files/freshPrin"
},
{
"path": "plugins/_experiments/compress/src/lz.js",
"chars": 14696,
"preview": "/* eslint-disable */\n// Copyright (c) 2013 Pieroxy <pieroxy@pieroxy.net>\n// This work is free. You can redistribute it a"
},
{
"path": "plugins/_experiments/markdown/README.md",
"chars": 68,
"preview": "experimental nlp on a [unified/remark](https://unifiedjs.com/) AST.\n"
},
{
"path": "plugins/_experiments/markdown/package.json",
"chars": 1470,
"preview": "{\n \"name\": \"compromise-markdown\",\n \"description\": \"plugin for nlp-compromise\",\n \"version\": \"0.0.0\",\n \"author\": \"Spen"
},
{
"path": "plugins/_experiments/markdown/scratch.js",
"chars": 699,
"preview": "/* eslint-disable */\nimport nlp from '../../../src/three.js'\nimport plg from './src/plugin.js'\nnlp.plugin(plg)\n\nlet md ="
},
{
"path": "plugins/_experiments/markdown/src/Wrap.js",
"chars": 0,
"preview": ""
},
{
"path": "plugins/_experiments/markdown/src/parse/crawl.js",
"chars": 887,
"preview": "// [a, b, a1, b1]\nconst breadthFirst = (root, fn) => {\n const list = []\n const queue = [root]\n while (queue.length > "
},
{
"path": "plugins/_experiments/markdown/src/parse/index.js",
"chars": 447,
"preview": "import { fromMarkdown } from 'mdast-util-from-markdown'\nimport { gfmTable } from 'micromark-extension-gfm-table'\nimport "
},
{
"path": "plugins/_experiments/markdown/src/parse/toPlaintext.js",
"chars": 1018,
"preview": "// import { depthFirst, breadthFirst } from './crawl.js'\nimport { visit } from 'unist-util-visit'\n// import uuid from '."
},
{
"path": "plugins/_experiments/markdown/src/parse/uuid.js",
"chars": 1337,
"preview": "/*\nunique & ordered term ids, based on time & term index\n\nBase 36 (numbers+ascii)\n 3 digit 4,600\n 2 digit 1,200\n 1 di"
},
{
"path": "plugins/_experiments/markdown/src/plugin.js",
"chars": 691,
"preview": "// import { convertToHtml, parseHtml, printHtml } from './html/index.js'\n// import { convertToMd, parseMd, printMd } fro"
},
{
"path": "plugins/_experiments/sentiment/README.md",
"chars": 74,
"preview": "experimental rule-based, compressed-data sentiment analysis by Scott Cram\n"
},
{
"path": "plugins/_experiments/sentiment/package.json",
"chars": 1208,
"preview": "{\n \"name\": \"compromise-sentiment\",\n \"description\": \"plugin for nlp-compromise\",\n \"version\": \"0.0.0\",\n \"author\": \"Spe"
},
{
"path": "plugins/_experiments/sentiment/scratch.js",
"chars": 232,
"preview": "import nlp from '../../../src/three.js'\nimport plg from './src/plugin.js'\nnlp.plugin(plg)\n\nconst arr = [\n \"the acting w"
},
{
"path": "plugins/_experiments/sentiment/src/data/_pckd.js",
"chars": 32944,
"preview": "/**\n* pattern_en_packed\n*\n* Variable containing polarity, subjectivity, and intensity scores for selected opinion-based "
},
{
"path": "plugins/_experiments/sentiment/src/data/index.js",
"chars": 1529,
"preview": "import { unpack } from 'efrt'\nimport pattern_en_packed from './_pckd.js'\n\n\n// Decompress above data\nconst pattern_en = u"
},
{
"path": "plugins/_experiments/sentiment/src/emoji.js",
"chars": 11974,
"preview": "import RegExpEscape from './escape.js'\n\n/**\n* emoticons\n*\n* Variable containing polarity scores for selected emoticons/s"
},
{
"path": "plugins/_experiments/sentiment/src/escape.js",
"chars": 452,
"preview": "/**\n* Function to escape characters in preparation for conversion to regex\n* \n* @author Brian L\n* @see {@link https://st"
},
{
"path": "plugins/_experiments/sentiment/src/lib.js",
"chars": 7661,
"preview": "import { intensifiers, negations } from './data/index.js'\n\n// HELPER FUNCTIONS\n\n\n\n/**\n* Label the words of the input arr"
},
{
"path": "plugins/_experiments/sentiment/src/plugin.js",
"chars": 8414,
"preview": "import { emoji_object_regex, emoji_regex, emoticon_regex, emoticons, emojis } from './emoji.js'\nimport { pattern_en, pat"
},
{
"path": "plugins/_experiments/sentiment/test.js",
"chars": 9615,
"preview": "/* eslint-disable */\nimport nlp from '../../../src/three.js'\nimport plg from './src/plugin.js'\nnlp.plugin(plg)\n\n// Tests"
},
{
"path": "plugins/dates/README.md",
"chars": 24529,
"preview": "<div align=\"center\">\n <img src=\"https://cloud.githubusercontent.com/assets/399657/23590290/ede73772-01aa-11e7-8915-181e"
},
{
"path": "plugins/dates/builds/compromise-dates.cjs",
"chars": 253299,
"preview": "(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory("
},
{
"path": "plugins/dates/builds/compromise-dates.mjs",
"chars": 121037,
"preview": "const e={second:!0,minute:!0,hour:!0,day:!0,week:!0,weekend:!0,month:!0,season:!0,quarter:!0,year:!0},t={wk:\"week\",min:\""
},
{
"path": "plugins/dates/changelog.md",
"chars": 2441,
"preview": "<!-- #### [Unreleased]\n- **[breaking]** - return array in .json().dates\n-->\n\n### 3.7.1 [Jan 2025]\n* * fix `#Month (next|"
},
{
"path": "plugins/dates/demo/index.html",
"chars": 672,
"preview": "<!DOCTYPE html>\n<html>\n\n<head>\n\n <script src=\"https://unpkg.com/compromise\"></script>\n <!-- <script src=\"https://unpkg"
},
{
"path": "plugins/dates/index.d.cts",
"chars": 47,
"preview": "import dates from './index.d';\n\nexport = dates\n"
},
{
"path": "plugins/dates/index.d.ts",
"chars": 1224,
"preview": "import nlp from 'compromise'\ntype View = ReturnType<typeof nlp>\n\nexport interface dateOptions {\n /** the default timezo"
},
{
"path": "plugins/dates/package.json",
"chars": 1397,
"preview": "{\n \"name\": \"compromise-dates\",\n \"description\": \"plugin for nlp-compromise\",\n \"version\": \"3.7.1\",\n \"author\": \"Spencer"
},
{
"path": "plugins/dates/scratch.js",
"chars": 1788,
"preview": "/* eslint-disable no-console, no-unused-vars */\nimport nlp from '../../src/three.js'\nimport spacetime from 'spacetime'\ni"
},
{
"path": "plugins/dates/scripts/perf.js",
"chars": 1133,
"preview": "/* eslint-disable no-console*/\nimport corpus from 'nlp-corpus'\nimport nlp from '../../../src/three.js'\nimport plugin fro"
},
{
"path": "plugins/dates/scripts/version.js",
"chars": 254,
"preview": "import fs from 'fs'\n// avoid requiring our whole package.json file\n// make a small file for our version number\nconst pkg"
},
{
"path": "plugins/dates/src/_version.js",
"chars": 22,
"preview": "export default '3.7.1'"
},
{
"path": "plugins/dates/src/api/dates.js",
"chars": 2864,
"preview": "import find from './find/index.js'\nimport parseDates from './parse/index.js'\nimport toJSON from './toJSON.js'\n\nconst qui"
},
{
"path": "plugins/dates/src/api/durations/index.js",
"chars": 1180,
"preview": "import parse from './parse.js'\n\nconst addDurations = function (View) {\n /** phrases like '2 months', or '2mins' */\n cl"
},
{
"path": "plugins/dates/src/api/durations/parse.js",
"chars": 1576,
"preview": "const known = {\n century: true,\n day: true,\n decade: true,\n hour: true,\n millisecond: true,\n minute: true,\n month"
},
{
"path": "plugins/dates/src/api/find/index.js",
"chars": 1407,
"preview": "import split from './split.js'\n\nconst findDate = function (doc) {\n let dates = doc.match('#Date+')\n // ignore only-dur"
},
{
"path": "plugins/dates/src/api/find/split.js",
"chars": 2084,
"preview": "// chop things up into bite-size pieces\nconst split = function (dates) {\n let m = null\n // don't split anything if it "
},
{
"path": "plugins/dates/src/api/index.js",
"chars": 204,
"preview": "import dates from './dates.js'\nimport times from './times.js'\nimport durations from './durations/index.js'\n\nconst api = "
},
{
"path": "plugins/dates/src/api/normalize.js",
"chars": 1414,
"preview": "\nconst normalize = function (doc) {\n doc = doc.clone()\n // 'four thirty' -> 4:30\n const m = doc.match('#Time+').match"
},
{
"path": "plugins/dates/src/api/parse/index.js",
"chars": 504,
"preview": "import parseRange from './range/index.js'\nimport spacetime from 'spacetime'\nimport normalize from './normalize.js'\n\n\n\nco"
},
{
"path": "plugins/dates/src/api/parse/normalize.js",
"chars": 722,
"preview": "const normalize = function (doc) {\n\n if (!doc.numbers) {\n console.warn(`\\nCompromise warning: compromise/three must "
},
{
"path": "plugins/dates/src/api/parse/one/01-tokenize/01-shift.js",
"chars": 2024,
"preview": "const knownUnits = {\n second: true,\n minute: true,\n hour: true,\n day: true,\n week: true,\n weekend: true,\n month: "
},
{
"path": "plugins/dates/src/api/parse/one/01-tokenize/02-counter.js",
"chars": 1118,
"preview": "/*\na 'counter' is a Unit determined after a point\n * first hour of x\n * 7th week in x\n * last year in x\n * \nunlike a"
},
{
"path": "plugins/dates/src/api/parse/one/01-tokenize/03-time.js",
"chars": 5376,
"preview": "import spacetime from 'spacetime'\n\n// these should be added to model\nconst hardCoded = {\n daybreak: '7:00am', //ergh\n "
},
{
"path": "plugins/dates/src/api/parse/one/01-tokenize/04-relative.js",
"chars": 764,
"preview": "// interpret 'this halloween' or 'next june'\nconst parseRelative = function (doc) {\n // avoid parsing 'day after next'\n"
},
{
"path": "plugins/dates/src/api/parse/one/01-tokenize/05-section.js",
"chars": 499,
"preview": "// 'start of october', 'middle of june 1st'\nconst parseSection = function (doc) {\n // start of 2019\n let m = doc.match"
},
{
"path": "plugins/dates/src/api/parse/one/01-tokenize/06-timezone.js",
"chars": 1288,
"preview": "import informal from './_timezones.js'\n\nconst isOffset = /(-?[0-9]+)h(rs)?/i\nconst isNumber = /(-?[0-9]+)/\nconst utcOffs"
},
{
"path": "plugins/dates/src/api/parse/one/01-tokenize/07-weekday.js",
"chars": 460,
"preview": "// pull-out 'thurs' from 'thurs next week'\nconst parseWeekday = function (doc) {\n const day = doc.match('#WeekDay')\n i"
},
{
"path": "plugins/dates/src/api/parse/one/01-tokenize/_timezones.js",
"chars": 9034,
"preview": "// some opinionated-but-common-sense timezone abbreviations\n// these timezone abbreviations are wholly made-up by me, Sp"
},
{
"path": "plugins/dates/src/api/parse/one/01-tokenize/index.js",
"chars": 1535,
"preview": "import doShift from './01-shift.js'\nimport doCounter from './02-counter.js'\nimport doTime from './03-time.js'\nimport doR"
},
{
"path": "plugins/dates/src/api/parse/one/02-parse/01-today.js",
"chars": 1936,
"preview": "import { Day, Moment } from '../units/index.js'\n\nconst knownWord = {\n today: (context) => {\n return new Day(context."
},
{
"path": "plugins/dates/src/api/parse/one/02-parse/02-holidays.js",
"chars": 740,
"preview": "import { Holiday } from '../units/index.js'\nimport spacetimeHoliday from 'spacetime-holiday'\n\nconst parseHoliday = funct"
},
{
"path": "plugins/dates/src/api/parse/one/02-parse/03-next-last.js",
"chars": 1402,
"preview": "import { Week, WeekEnd, AnyMonth, AnyQuarter, Year, Season, WeekDay, Day, Hour, Minute, Moment } from '../units/index.js"
},
{
"path": "plugins/dates/src/api/parse/one/02-parse/04-yearly.js",
"chars": 1925,
"preview": "import { Quarter, Season, Year } from '../units/index.js'\nimport spacetime from 'spacetime'\n\nconst fmtToday = function ("
},
{
"path": "plugins/dates/src/api/parse/one/02-parse/05-explicit.js",
"chars": 4897,
"preview": "import { Day, CalendarDate, Month, Moment } from '../units/index.js'\n\n// parse things like 'june 5th 2019'\n// most of th"
},
{
"path": "plugins/dates/src/api/parse/one/02-parse/index.js",
"chars": 587,
"preview": "import today from './01-today.js'\nimport holiday from './02-holidays.js'\nimport nextLast from './03-next-last.js'\nimport"
},
{
"path": "plugins/dates/src/api/parse/one/03-transform/addCounter.js",
"chars": 1068,
"preview": "import { Quarter, Season, Week, Day, Hour, Minute, Month, WeekEnd } from '../units/index.js'\n\nconst units = {\n day: Day"
},
{
"path": "plugins/dates/src/api/parse/one/03-transform/index.js",
"chars": 1302,
"preview": "import addCounter from './addCounter.js'\nimport { WeekDay, Moment, Day } from '../units/index.js'\n\n// apply all parsed {"
},
{
"path": "plugins/dates/src/api/parse/one/index.js",
"chars": 1231,
"preview": "// import spacetime from 'spacetime'\nimport tokenize from './01-tokenize/index.js'\nimport parse from './02-parse/index.j"
},
{
"path": "plugins/dates/src/api/parse/one/units/Unit.js",
"chars": 4401,
"preview": "import spacetime from 'spacetime'\n\nclass Unit {\n constructor(input, unit, context) {\n this.unit = unit || 'day'\n "
},
{
"path": "plugins/dates/src/api/parse/one/units/_day.js",
"chars": 2760,
"preview": "import spacetime from 'spacetime'\nimport Unit from './Unit.js'\n\nclass Day extends Unit {\n constructor(input, unit, cont"
},
{
"path": "plugins/dates/src/api/parse/one/units/_time.js",
"chars": 621,
"preview": "import Unit from './Unit.js'\n\nclass Hour extends Unit {\n constructor(input, unit, context) {\n super(input, unit, con"
},
{
"path": "plugins/dates/src/api/parse/one/units/_week.js",
"chars": 1150,
"preview": "import Unit from './Unit.js'\n\nclass Week extends Unit {\n constructor(input, unit, context) {\n super(input, unit, con"
},
{
"path": "plugins/dates/src/api/parse/one/units/_year.js",
"chars": 2365,
"preview": "import Unit from './Unit.js'\n\n// a specific month, like 'March'\nclass AnyMonth extends Unit {\n constructor(input, unit,"
},
{
"path": "plugins/dates/src/api/parse/one/units/index.js",
"chars": 429,
"preview": "\nexport { default as Unit } from './Unit.js'\nexport { Day, WeekDay, CalendarDate, Holiday } from './_day.js'\nexport { Ho"
},
{
"path": "plugins/dates/src/api/parse/range/01-two-times.js",
"chars": 2501,
"preview": "import parseDate from '../one/index.js'\nimport reverseMaybe from './_reverse.js'\n\nconst moveToPM = function (obj) {\n co"
},
{
"path": "plugins/dates/src/api/parse/range/02-date-range.js",
"chars": 6788,
"preview": "import parseDate from '../one/index.js'\nimport reverseMaybe from './_reverse.js'\nimport { Month, CalendarDate } from '.."
},
{
"path": "plugins/dates/src/api/parse/range/03-one-date.js",
"chars": 3138,
"preview": "import parseDate from '../one/index.js'\nimport reverseMaybe from './_reverse.js'\nimport Unit from '../one/units/Unit.js'"
},
{
"path": "plugins/dates/src/api/parse/range/_reverse.js",
"chars": 452,
"preview": "// somewhat-intellegent response to end-before-start situations\nconst reverseMaybe = function (obj) {\n const start = ob"
},
{
"path": "plugins/dates/src/api/parse/range/combos/index.js",
"chars": 4161,
"preview": "import parseDate from '../../one/index.js'\n\n// these are dates that produce two seperate dates,\n// and not a start-end r"
},
{
"path": "plugins/dates/src/api/parse/range/index.js",
"chars": 2084,
"preview": "import parseDate from '../one/index.js'\nimport repeating from './intervals/index.js'\n// ranges\nimport doTwoTimes from '."
},
{
"path": "plugins/dates/src/api/parse/range/intervals/index.js",
"chars": 3417,
"preview": "import parseTime from '../../one/01-tokenize/03-time.js'\n\nconst dayNames = {\n mon: 'monday',\n tue: 'tuesday',\n tues: "
},
{
"path": "plugins/dates/src/api/times.js",
"chars": 1785,
"preview": "import normalize from './normalize.js'\nimport parseTime from './parse/one/01-tokenize/03-time.js'\nimport spacetime from "
},
{
"path": "plugins/dates/src/api/toJSON.js",
"chars": 653,
"preview": "const getDuration = function (range) {\n const end = range.end.d.add(1, 'millisecond')\n const diff = end.since(range.st"
},
{
"path": "plugins/dates/src/compute/00-year.js",
"chars": 2868,
"preview": "//ambiguous 'may' and 'march'\n// const preps = '(in|by|before|during|on|until|after|of|within|all)' //6\n// const thisNex"
},
{
"path": "plugins/dates/src/compute/01-time-range.js",
"chars": 2222,
"preview": "\n// 3-4 can be a time-range, sometimes\nconst tagTimeRange = function (m, reason) {\n if (m.found) {\n m.tag('Date', re"
},
{
"path": "plugins/dates/src/compute/02-timezone.js",
"chars": 1205,
"preview": "// timezone abbreviations\n// (from spencermountain/timezone-soft)\nconst zones = [\n 'act',\n 'aft',\n 'akst',\n 'anat',\n"
},
{
"path": "plugins/dates/src/compute/03-fixup.js",
"chars": 859,
"preview": "const here = 'fix-tagger'\n//\nconst fixUp = function (doc) {\n //fixups\n if (doc.has('#Date')) {\n //first day by mond"
},
{
"path": "plugins/dates/src/compute/index.js",
"chars": 942,
"preview": "import basic from './00-year.js'\nimport time from './01-time-range.js'\nimport timezone from './02-timezone.js'\nimport fi"
},
{
"path": "plugins/dates/src/compute/matches.js",
"chars": 13431,
"preview": "const preps = '(in|by|before|during|on|until|after|of|within|all)' //6\nconst thisNext = '(last|next|this|previous|curren"
},
{
"path": "plugins/dates/src/debug.js",
"chars": 908,
"preview": "/* eslint-disable no-console */\nimport spacetime from 'spacetime'\n\nconst fmt = iso => (iso ? spacetime(iso).format('{nic"
},
{
"path": "plugins/dates/src/model/regex.js",
"chars": 478,
"preview": "export default [\n // 30sec\n [/^[0-9]+(min|sec|hr|d)s?$/i, 'Duration', '30min'],\n // 2012-06\n [/^[0-9]{4}-[0-9]{2}$/,"
},
{
"path": "plugins/dates/src/model/tags.js",
"chars": 362,
"preview": "export default {\n FinancialQuarter: {\n is: 'Date',\n not: ['Fraction'],\n },\n // 'summer'\n Season: {\n is: 'Da"
},
{
"path": "plugins/dates/src/model/words/dates.js",
"chars": 216,
"preview": "export default [\n 'weekday',\n\n 'summer',\n 'winter',\n 'autumn',\n\n // 'some day',\n // 'one day',\n 'all day',\n // '"
},
{
"path": "plugins/dates/src/model/words/durations.js",
"chars": 469,
"preview": "export default [\n 'centuries',\n 'century',\n 'day',\n 'days',\n 'decade',\n 'decades',\n 'hour',\n 'hours',\n 'hr',\n "
},
{
"path": "plugins/dates/src/model/words/holidays.js",
"chars": 2783,
"preview": "export default [\n 'all hallows eve',\n 'all saints day',\n 'all sts day',\n 'april fools',\n 'armistice day',\n 'austra"
},
{
"path": "plugins/dates/src/model/words/index.js",
"chars": 523,
"preview": "import timezones from './timezones.js'\nimport dates from './dates.js'\nimport durations from './durations.js'\nimport holi"
},
{
"path": "plugins/dates/src/model/words/times.js",
"chars": 266,
"preview": "export default [\n 'noon',\n 'midnight',\n 'morning',\n 'tonight',\n 'evening',\n 'afternoon',\n 'breakfast time',\n 'lu"
},
{
"path": "plugins/dates/src/model/words/timezones.js",
"chars": 6932,
"preview": "import spacetime from 'spacetime'\n\nconst america = 'America/'\nconst asia = 'Asia/'\nconst europe = 'Europe/'\nconst africa"
},
{
"path": "plugins/dates/src/plugin.js",
"chars": 666,
"preview": "import api from './api/index.js'\nimport compute from './compute/index.js'\nimport tags from './model/tags.js'\nimport word"
},
{
"path": "plugins/dates/tests/_lib.js",
"chars": 409,
"preview": "import build from '../../../builds/three/compromise-three.mjs'\nimport src from '../../../src/three.js'\nimport plgBuild f"
},
{
"path": "plugins/dates/tests/ambig-month.test.js",
"chars": 3077,
"preview": "import test from 'tape'\nimport nlp from './_lib.js'\nimport spacetime from 'spacetime'\n\nconst fmt = (iso) => (iso ? space"
},
{
"path": "plugins/dates/tests/ambig-week.test.js",
"chars": 1617,
"preview": "import test from 'tape'\nimport nlp from './_lib.js'\nimport spacetime from 'spacetime'\n\nconst fmt = (iso) => (iso ? space"
},
{
"path": "plugins/dates/tests/ambig-weekday.test.js",
"chars": 1388,
"preview": "import test from 'tape'\nimport nlp from './_lib.js'\nimport spacetime from 'spacetime'\n\nconst fmt = (iso) => (iso ? space"
},
{
"path": "plugins/dates/tests/backlog/combo.ignore.js",
"chars": 1782,
"preview": "import test from 'tape'\nimport nlp from '../_lib.js'\n\nconst context = {\n today: '2021-04-17', //saturday\n timezone: 'C"
},
{
"path": "plugins/dates/tests/backlog/duckling.ignore.js",
"chars": 41593,
"preview": "// -- Copyright (c) 2016-present, Facebook, Inc.\n// -- All rights reserved.\n// https://github.com/facebook/duckling/edit"
},
{
"path": "plugins/dates/tests/backlog/interval.ignore.js",
"chars": 1825,
"preview": "import test from 'tape'\nimport nlp from '../_lib.js'\n\ntest('test first generated-date', function (t) {\n const context ="
},
{
"path": "plugins/dates/tests/backlog/units.ignore.js",
"chars": 902,
"preview": "import test from 'tape'\nimport nlp from '../_lib.js'\n\ntest('units', function (t) {\n const arr = [\n ['2020', 'year'],"
},
{
"path": "plugins/dates/tests/before-after.test.js",
"chars": 1591,
"preview": "import test from 'tape'\nimport nlp from './_lib.js'\nconst here = ' [dates/before-after] '\n\ntest('isBefore misc', functio"
},
{
"path": "plugins/dates/tests/chronic.test.js",
"chars": 17483,
"preview": "// a bunch of tests copy+pasted from the chronic date parser,\n// by Tom Preston-Werner ❤️\n// https://github.com/mojombo/"
},
{
"path": "plugins/dates/tests/day-start.test.js",
"chars": 1217,
"preview": "import test from 'tape'\nimport spacetime from 'spacetime'\nimport nlp from './_lib.js'\n\ntest('day-start edge-cases', func"
},
{
"path": "plugins/dates/tests/dmy.test.js",
"chars": 2089,
"preview": "import test from 'tape'\nimport nlp from './_lib.js'\n\ntest('dmy option loop', function (t) {\n const arr = [\n ['01/02'"
},
{
"path": "plugins/dates/tests/duration-range.test.js",
"chars": 2913,
"preview": "import test from 'tape'\nimport nlp from './_lib.js'\n\nconst context = {\n today: '2024-09-24',\n}\n\nconst arr = [\n { str: "
},
{
"path": "plugins/dates/tests/duration.test.js",
"chars": 1773,
"preview": "import test from 'tape'\nimport nlp from './_lib.js'\n// const relaxed = 14\n\nconst february = 1\n//number of days between s"
}
]
// ... and 862 more files (download for full content)
About this extraction
This page contains the full source code of the spencermountain/compromise GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1062 files (5.9 MB), approximately 1.6M tokens, and a symbol index with 1221 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.